MongoDb。获取嵌套数组中的对象
我有一个收藏,里面有这样的文件:MongoDb。获取嵌套数组中的对象,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我有一个收藏,里面有这样的文件: { "_id" : "bc923adf-ddd9-4987-a759-2d3f8dbffe3e", "title" : "DocumentTitle", "nestedObjects" : [ { "_id" : "3eef3a60-8d70-4640-b494-cb17e52e73a7", "startTime" : "21:00:00",
{
"_id" : "bc923adf-ddd9-4987-a759-2d3f8dbffe3e",
"title" : "DocumentTitle",
"nestedObjects" : [
{
"_id" : "3eef3a60-8d70-4640-b494-cb17e52e73a7",
"startTime" : "21:00:00",
"endTime" : "00:00:00"
},
{
"_id" : "5aa8ca60-8d70-4640-b494-cb17e52e4caa",
"startTime" : "17:00:00",
"endTime" : "23:00:00"
}
]
}
我需要一个查询来获取同时匹配Id、根对象Id和嵌套对象Id的“nestedObject”。例如,给定根对象Id等于“bc923adf-ddd9-4987-a759-2d3f8dbffe3e”,嵌套对象Id等于“5aa8ca60-8d70-4640-b494-cb17e52e4caa”,我希望得到以下结果:
{
"_id" : "5aa8ca60-8d70-4640-b494-cb17e52e4caa",
"startTime" : "17:00:00",
"endTime" : "23:00:00"
}
我试着提出这个问题
var nestedObject = db.myCollection.aggregate(
[
{ "$match" : { "_id" : "bc923adf-ddd9-4987-a759-2d3f8dbffe3e" } },
{ "$unwind" : "$nestedObjects" },
{ "$match" : { "nestedObjects._id" : "5aa8ca60-8d70-4640-b494-cb17e52e4caa" } },
{ "$project" : { "startTime" : "$nestedObjects.startTime", "endTime":"$nestedObjects.endTime" } }
]);
我希望能够使用nestedObject.startTime
访问starTime
和endTime
属性,但没有运气。另外,我希望获得整个嵌套对象,而无需在项目
阶段列出其所有属性
我做错了什么?有没有更简单的查询可以运行
谢谢。将您的
$project
阶段替换为$replaceRoot
:
{ "$replaceRoot" : { newRoot: "$nestedObjects" } }