MongoDB:获取嵌套数组的所有元素

时间:2015-09-23 12:32:34

标签: arrays mongodb

是否可以使用find()获取嵌套数组中保存的每个元素。我需要获取保存在文档的cat-field中的所有元素的列表。

{
    "_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 

1 个答案:

答案 0 :(得分:0)

您还可以使用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"
    }
    }
})