gpt4 book ai didi

Mongodb:$expr 比较同一文档中同一数组的两个元素

转载 作者:行者123 更新时间:2023-12-04 07:41:42 26 4
gpt4 key购买 nike

我有一些带有数组的文档 v正好包含 2 个带有两个数字的对象 ab作为属性。我想在聚合中过滤数组中两个对象具有相同 b 的文档值(value)。
例如,有这个文件:

[
{
"v": [
{
"a": 1,
"b": 1
},
{
"a": 1,
"b": 2
}
]
}
]
和这个查询:
db.collection.aggregate([
{
"$match": {
"$expr": {
"$eq": [
"$v.0.b",
"$v.1.b"
]
}
}
}
])
该文档不应该通过,因为它有两个差异值( 12 )用于 b ,但它最终会过去。为什么?
这是游乐场: https://mongoplayground.net/

最佳答案

您应该使用 $arrayElemAt每当您通过索引引用数组内的对象时,运算符。
以下查询是您要查找的内容。

db.collection.aggregate([
{
"$match": {
"$expr": {
"$eq": [
{
"$arrayElemAt": [
"$v.b",
0 // References Array Index `0`
]
},
{
"$arrayElemAt": [
"$v.b",
1 // References Array Index `1`
]
},
]
}
}
}
])

关于Mongodb:$expr 比较同一文档中同一数组的两个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67423516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com