从数组中的嵌入文档中获取第一个文档 - MongoDB

时间:2016-12-12 12:07:48

标签: mongodb database

以下是我正在处理的收集数据。

{
    "_id" : "1",
    "embed_array" : [
        {
            "id" : 14,
            "data" : "XXX"
        },
        {
            "id" : 13,
            "data" : "YYY"
        },
        {
            "id" : 12,
            "data" : "ZZZ"
        }
    ]
}, 
{
    "_id" : "2",
    "embed_array" : [
        {
            "id" : 14,
            "data" : "XXX1"
        },
        {
            "id" : 13,
            "data" : "YYY1"
        },
        {
            "id" : 12,
            "data" : "ZZZ1"
        }
    ]
},
{
    "_id" : "3",
    "embed_array" : [
        {
            "id" : 14,
            "data" : "XXX2"
        },
        {
            "id" : 13,
            "data" : "YYY2"
        },
        {
            "id" : 12,
            "data" : "ZZZ2"
        }
    ]
}

这就是我想要的。

{
     "id" : 14,
     "data" : "XXX"
}

以下是搜索条件。 " _id":" 1", " embed_array":第一个数组文档。

我试过$ slice,但没有成功。

任何帮助将不胜感激。感谢

1 个答案:

答案 0 :(得分:0)

你可以这样做:

db.collection.find({
   _id:"1"
},
{
   _id:1,
   embed_array:{
      $slice: 1
   }
})

第一步是使用{_id:“1”}过滤_id字段。然后我们使用投影来仅返回我们需要的信息。在这里,我们只想要“embed_array”的第一个元素,因此我们使用 $slice 运算符。

{$ slice:1}等于{$ slice:[0,1]},这意味着:获取索引0和1之间的数组元素

它会返回

{ 
  "_id" : "1", 
  "embed_array" : [ 
    { "id" : 14, "data" : "XXX" } 
  ] 
}