仅返回在文档中搜索的嵌入式属性的最后一级

时间:2019-04-10 21:26:43

标签: mongodb

我有这些文件。

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"
            }

我得到的答案是整个文档,我想前进到查询的特定级别。我该怎么办?

2 个答案:

答案 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部分。

这是一个演示:https://mongoplayground.net/p/Fvll0LFIvQy