假设我们有以下文档:
{a: 1, b: 2},
{a: 2, b: 0},
{a: 3, b: 1}
我想要一个返回的查询:
[0, 1, 2, 3]
我想知道是否有比以下更快的方法来做到这一点:
- 只需进行 2 个查询,一个选择
a
,另一个选择b
然后合并到我的应用程序中。 - 使用 map reduce(与之前的方法相比,速度非常慢)
最佳答案
您需要 $group
我们的文件并使用$push
累加器运算符返回集合中的“a”和“b”数组。
在 $project
您使用 $setUnion
的运算符运算符来过滤掉重复项。
db.coll.aggregate(
[
{ "$group": {
"_id": null,
"a": { "$push": "$a" },
"b": { "$push": "$b" }
}},
{ "$project": {
"_id": 0,
"merged": { "$setUnion": [ "$a", "$b" ] }
}}
]
)
产生:
{ "merged" : [ 3, 2, 0, 1 ] }
关于mongodb - 选择 2 个字段并返回具有不同值的排序数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37883879/