Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB:聚合元素值为'的对象数组中的索引值;x';_Mongodb_Aggregation Framework_Indexof - Fatal编程技术网

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的,而我将其作为字符串传递。。。。。