假设我们有以下文档:
{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”的数组。
In the $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 ] }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)