假设我有一个名为"人"的Collection ,里面有以下文件:

{
    "name": "doug",
    "colors": ["blue", "red"]
}

{
    "name": "jack",
    "colors": ["blue", "purple"]
}

{
    "name": "jenny",
    "colors": ["pink"]
}

我如何得到一个包含所有colors个子数组的串联数组,即.?

["blue", "red", "blue", "purple", "pink"]

推荐答案

try 使用聚合:

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
}

Updated

如果希望在结果数组中获得唯一值,可以使用$addToSet运算符,而不是$group阶段中的$push运算符.

Mongodb相关问答推荐

在一个视图中连接两个集合MongoDB;展开有什么作用?

如何在MongoDB中查找和过滤嵌套数组

无法通过管理邮箱/密码身份验证注册/登录新用户帐户(类型错误:加载失败)

数组过滤器 MongoDB

如何向所有文档添加一个字段,其中前 100 个文档的值为 1,接下来的 100 个文档的值为 2,依此类推?

定期自动轮换 MongoDb 集合

MongoDB聚合:如何将查找结果放入嵌套数组中?

.insertOne 不是函数

使用 Spring Boot >= 2.0.1.RELEASE 将 ZonedDateTime 保存到 MongoDB 时出现 CodecConfigurationException

Meteor 如何接收对 MongoDB 查询结果的更新?

Mongo 重启错误 -- /var/run/mongodb/mongod.pid 存在

什么是 mongodb 中的admin数据库?

从 LinkedHashMap 转换为 Json 字符串

Mongodb KeyFile 太开放权限

如何在 MongoDB Map-reduce 映射函数中使用变量

MongoDB限制内存

Java Mongodb 正则表达式查询

Mongoose:查询starts with

MongoTemplate upsert - 从 pojo 进行更新的简单方法(哪个用户已编辑)?

如何使用户的邮箱在 mongoDB 中唯一?