簡體   English   中英

MongoDB:獲取嵌套數組的所有元素

[英]MongoDB: Get all elements of a nested array

是否有可能使用find()獲取保存在嵌套數組中的每個元素。 我需要獲取保存在文檔的cat字段中的所有元素的列表。

{
    "_id" : "1",
    "title" : "title 1",
    "cat" : [
        {
            "element" : "element 1"
        },
        {
            "element" : "element 2"
        }
    ]
},
{
    "_id" : "2",
    "title" : "title 2",
    "cat" : [
        {
            "element" : "element 3"
        },
        {
            "element" : "element 4"
        }
    ]
}

此示例的結果應該是-因為我還需要該文檔的ID:

1, element 1
1, element 2
2, element 3
2, element 4 

您也可以嘗試使用distinct以下查詢:

db.collection.distinct("cat.element")

編輯:

然后,您可以嘗試$ map 作為重復問題中標記的內容,例如:

您可以像這樣簡單地使用它:

db.collection.aggregate({
    "$project": {
    "cat": {
        "$map": {
            "input": "$cat",
            "as": "el",
            "in": "$$el.element"
        }
    },
    "title": 1
    }
})

要么

db.collection.aggregate({
    "$project": {
    "cat": {
        "$map": {
            "input": "$cat",
            "as": "el",
            "in": "$$el.element"
        }
    },
    "title": 1
    }
}, {
    $group: {
    _id: "$_id",
    "title": {
        $first: "$title"
    },
    "cat": {
        "$first": "$cat"
    }
    }
})

暫無
暫無

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

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