如何在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
,以过滤出结果。这并不能回答问题。这只返回不同的颜色,而接受的答案返回所有连接的数组。