假设我们有以下文档:
{a: 1, b: 2},
{a: 2, b: 0},
{a: 3, b: 1}
我想要一个返回的查询:
[0, 1, 2, 3]
我想知道是否有比以下更快的方法来做到这一点:
a
,另一个选择 b
然后合并到我的应用程序中。最佳答案
您需要 $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 ] }
https://stackoverflow.com/questions/37883879/
相关文章:
mongodb - 使用更新查询将文档值从字符串更改为 ObjectId
mongodb - Docker-MongoDB 中的身份验证问题
mongodb - 按 id 对 Mongo 文档进行分组,并按时间戳获取最新文档
ruby-on-rails - 运行 Rails 应用程序时的 Mongo::Error::NoSe
php - 在 Ubuntu 14 上将 PHP Mongo 扩展更新到 1.5
linux - PHP升级到7后,为什么不能使用mongodb驱动?
python - 具有完整行对象的 Mongo Distinct Query