簡體   English   中英

mongodb - 從集合中的兩個 arrays 中獲取一個數組

[英]mongodb - Get one array from two arrays in collection

在我的 mongodb 集合中,我有時在一個文檔上有兩個,有時一個,有時是 null arrays。 現在我想用這些 arrays 的值在整個集合中獲取一個數組。

該文檔如下所示:

{
    "title" : "myDocument",
    "listOne" : [ 
        "valueOne", 
        "valueTwo"
    ],
    "listTwo" : [ 
        "abc", 
        "qwer"
    ]
},
{
    "title" : "myDocumentTwo",
    "listTwo" : [  
        "321"
    ]
},
{
    "title" : "myDocumentAlpha",
    "listOne" : [ 
        "alpha", 
        "beta"
    ]
},
{
    "title" : "myDocumentbeta"
}

我期待以下 output:

"combinedList" : [
    "valueOne", 
    "valueTwo",
    "abc",
    "qwer",
    "321",
    "alpha",
    "beta"
]

就像這個集合中每個文檔中這兩個數組中的每個可能值一樣。

您可以使用aggregate$concatArrays來執行此操作

db.collection.aggregate([
  {
    $project: {
      combinedList: {
        $concatArrays: [{$ifNull: ["$listOne", []]}, {$ifNull: ["$listTwo", []]}]
      }
    }
  },
  { $unwind: "$combinedList" },
  { $group: { _id: null, combinedList: { $addToSet: "$combinedList"}}},
  { $project: { _id: 0, combinedList: 1 }}
])

暫無
暫無

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

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