是否可以使用 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/