Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.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 选择数组中的对象_Mongodb_Mongodb Query_Aggregation Framework - Fatal编程技术网

Mongodb 选择数组中的对象

Mongodb 选择数组中的对象,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我想在具有id条件的数组中选择一个对象。在下面的img中,我想选择[0] db.users.find({“injury.\u id”:ObjectId(“537233061845d2ec10000071”)) 感谢您的帮助。我猜您只想查看您正在搜索的文档中选定的数组元素。使用投影: db.users.find( {“伤害”:ObjectId(“537233061845d2ec10000071”), {“伤害$”:1} ) 它只返回匹配的元素,而不是所有元素 如果您期望超过一个匹配项(不太可

我想在具有
id
条件的数组中选择一个对象。在下面的img中,我想选择
[0]

db.users.find({“injury.\u id”:ObjectId(“537233061845d2ec10000071”))

感谢您的帮助。

我猜您只想查看您正在搜索的文档中选定的数组元素。使用投影:

db.users.find(
{“伤害”:ObjectId(“537233061845d2ec10000071”),
{“伤害$”:1}
)
它只返回匹配的元素,而不是所有元素

如果您期望超过一个匹配项(不太可能与ObjectId匹配,但供将来参考),则使用以下方法:

db.users.aggregate([
//首先匹配文档,有助于减少管道
{“$match”:{
“伤害”:ObjectId(“537233061845d2ec10000071”)
}},
//展开阵列
{“$放松”:“$受伤”},
//实际匹配元素
{“$match”:{
“伤害”:ObjectId(“537233061845d2ec10000071”)
}},
//如果确实需要阵列,请分组
{“$组”:{
“\u id”:“$\u id”,
“伤害”:{“$push”:“$injury”},
//并对任何其他字段使用“$first”
}}
])

所以现在你也知道当你遇到这个问题时该怎么办了。

我能恳求你停止发布截图吗。它们很难尝试和阅读,数据(这次你至少发布了一些文本)更好地表示为文本,这样人们就可以在不碍事的情况下使用它。你真正的问题是什么?是否要选择具有
\u id
值的数组元素,还是要选择数组的索引
0
?然后做什么?我想选择id为
\u id
的数组元素…您可以使用上面显示的查询。你是说别的吗?请澄清你编辑问题的意思。谢谢…效果很好…下次我将尝试在没有截图的情况下发布…:)@Anup谢谢。答案中还包含了一个基本示例,用于何时需要从数组中筛选多个结果。