如何在MongoDB中连接来自多个文档的数组?
假设我有一个名为“人”的集合,其中包含以下文档:如何在MongoDB中连接来自多个文档的数组?,mongodb,nosql,Mongodb,Nosql,假设我有一个名为“人”的集合,其中包含以下文档: { "name": "doug", "colors": ["blue", "red"] } { "name": "jack", "colors": ["blue", "purple"] } { "name": "jenny", "colors": ["pink"] } 如何获得所有颜色子数组的串联数组,即 ["blue", "red", "blue", "purple", "pink"] 好
{
"name": "doug",
"colors": ["blue", "red"]
}
{
"name": "jack",
"colors": ["blue", "purple"]
}
{
"name": "jenny",
"colors": ["pink"]
}
如何获得所有颜色
子数组的串联数组,即
["blue", "red", "blue", "purple", "pink"]
好吧,试试看,对你来说应该很好
db.people.distinct("colors")
尝试使用聚合:
db.people.aggregate([
{$unwind:"$colors"},
{$group:{_id:null, clrs: {$push : "$colors"} }},
{$project:{_id:0, colors: "$clrs"}}
])
结果:
{
"result" : [
{
"colors" : [
"blue",
"red",
"blue",
"purple",
"pink"
]
}
],
"ok" : 1
}
已更新
如果您想在结果数组中获得唯一值,您可以在
$group
阶段使用运算符而不是$push
。您好,但是如果我需要结果中的唯一值,我将如何实现,因为这将在该数组中提供重复条目。为此,您可以在{$group:{{u id:null,clrs:{$push:$colors}}},
string中使用$addToSet
更改$push
运算符。简单高效!这个答案应该是可以接受的。非常好,正是我所需要的;您还可以将可选查询传递给distinct
,以过滤出结果。这并不能回答问题。这只返回不同的颜色,而接受的答案返回所有连接的数组。