我有这些文件。
db.test.find({"house.floor":1})
db.test.insertMany([{
"name":"homer",
"house": {
"floor": 1,
"room":
{
"bed": "bed_pink",
"chair":"chair_pink"
}
}
},
{
"name":"marge",
"house": {
"floor": 1,
"room":
{
"bed": "bed_blue",
"chair":"chair_red"
}
}
}]
)
db.test.find({"house.room.bed":"bed_blue"})
我只想返回搜索的最后一级的值。在这种情况下:
{
"bed": "bed_blue",
"chair":"chair_red"
}
我得到的答案是整个文档,我想前进到查询的特定级别。我该怎么办?
答案 0 :(得分:0)
您可以对其进行聚合
db.test.aggregate([
{ $match: { "house.room.bed":"bed_blue" } },
{ $replaceRoot: { newRoot: "$house.room" } }
])
答案 1 :(得分:0)
您可以将aggregate
与$match
和$project
一起使用,如下所示:
db.test.aggregate([
{
$match: {
"house.room.bed": "bed_blue"
}
},
{
$project: {
"_id": 0,
"bed": "$house.room.bed",
"chair": "$house.room.chair"
}
}
])
此外,您可以根据需要修改$project
部分。