簡體   English   中英

從數組中的嵌入式文檔中獲取第一個文檔-MongoDB

[英]Get first document from an embedded document in array - MongoDB

這是我正在處理的收集數據。

{
    "_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,但沒有成功。

任何幫助將不勝感激。 謝謝

你可以這樣做:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM