我有一个像这样的元素的集合:
{
_id: 585b...,
data: [
{
name: "John",
age: 30
},
{
name: "Jane",
age: 31
}
]
}
我知道如何找到包含John的文档:
db.People.find({"data.name", "John"})
然后我得到整个文件。我怎样才能获得嵌入式文档。所以我想回复一下:
{
name: "John",
age: 30
}
对于上下文:这是较大数据集的一部分,我需要检查是否对此特定文档进行了某些更新。由于应用程序的实现方式,嵌入式文档并不总是处于同一索引中。
那么如何查询和返回嵌入文档呢?
答案 0 :(得分:0)
使用第二个参数来取消ID
db.people.find({"data.name", "John"}, {_id : 0})
这将输出
data: [
{
name: "John",
age: 30
},
{
name: "Jane",
age: 31
}
]
要获得嵌入式文档,请使用聚合。
db.test.aggregate([
{
$unwind : "$data"
},
{
$match : {"data.name" : "John"}
},
{
$project : {
_id : 0,
name : "$data.name",
age : "$data.age"
}
}
])