MongoDB:聚合元素值为'的对象数组中的索引值;x';
我试图从文档的这一部分着手: 我的用例几乎完全相同,只是我没有一个值数组,而是一个对象数组:MongoDB:聚合元素值为'的对象数组中的索引值;x';,mongodb,aggregation-framework,indexof,Mongodb,Aggregation Framework,Indexof,我试图从文档的这一部分着手: 我的用例几乎完全相同,只是我没有一个值数组,而是一个对象数组: { "_id" : 1, "items" : [ {x: "one", y: "two", z: "three"}, {x: "four", y: "five", z: "six"}, {etc...} ]} 该示例给出了以下示例:db.inventory.aggregate([{$project:{index:{$indexOfArray:[“$items”,2]}}}}]
{ "_id" : 1, "items" : [
{x: "one", y: "two", z: "three"},
{x: "four", y: "five", z: "six"},
{etc...}
]}
该示例给出了以下示例:db.inventory.aggregate([{$project:{index:{$indexOfArray:[“$items”,2]}}}}]
2
是使用$items
的数组表达式查找的搜索表达式
我的问题是因为我试图找到元素y等于myVariableValue的对象的索引。我尝试了许多不同的组合来重新排列语法,但没有返回任何结果,除了-1,这意味着找不到它
db.collection.aggregate([
{$match: {_id: id}},
{$project: {index: {$indexOfArray: [ "$items", {y: myVariableValue} ] }}}
]);
似乎不起作用,并且认为它肯定会起作用
要返回正确的索引值,我需要的正确搜索语法是什么?谢谢!您的
$indexOfArray
语法必须如下所示:
{
$项目:{
索引:{
$indexOfArray:[
“$items.y”,
myVariableValue
]
}
}
}
如果mongodb文档中存在一个对象数组的示例,那就太好了。Yep!这是正确的语法。我想我确实尝试过这种组合,但我的代码中有另一个问题。db文档中的值是我搜索时存储为int的,而我将其作为字符串传递。。。。。