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

标签 arrays mongodb

是否可以使用 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"
    }
    }
})

关于arrays - MongoDB:获取嵌套数组的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32739734/

相关文章:

javascript - 如何根据集合中的数据显示html字段?

javascript - 在 Meteor 应用程序中实现 MongoDB 2.4 的全文搜索

javascript - 如何循环遍历 Node/Express 中的对象数组并检查 MongoDB 数据库中是否存在匹配项?

mongodb - 如何在erlang MongoDB驱动程序中实现聚合

c++ - 同时交换 char 数组中的多个对象

C++ ReadProcessMemory 到字节数组

arrays - C++ 中的向量<向量<?>> 到数组

ruby - 通过引用文档进行 Mongoid 查询

java - 求两个元素之和的最小绝对值

Java 输入不匹配异常?