我们正在try 将字符串数组"连接"到聚合中的单个字符串.

给出了以下数据集:

Collection 1:

{
  id: 1234,
  field: 'test'
}

第2集:

{
  id: 1111,
  collection1_id: 1234,
  name: 'Max'
},
{
  id: 1112,
  collection1_id: 1234,
  name: 'Andy'
}

当前结果(在查找等之后):

{
  id: 1234,
  field: 'test',
  collection2: ['Max', 'Andy'] 
}

The desired result:

{
  id: 1234,
  field: 'test',
  collection2: 'Max, Andy'
}

是否有可能将"collection2"连接到单个字符串?我们try 了$concat,但它只接受字符串.

推荐答案

你在正确的轨道上.

只需在你的$project阶段加上$reduce$concat.

'collection2': {
    '$reduce': {
        'input': '$collection2',
        'initialValue': '',
        'in': {
            '$concat': [
                '$$value',
                {'$cond': [{'$eq': ['$$value', '']}, '', ', ']}, 
                '$$this']
        }
    }
}

注意:我们使用$cond来防止串联中的前导,.

Mongodb相关问答推荐

Mongo如何找到字段排除特殊字符

基于另一子文档更改子文档的引用

MongoDB中的字符串聚合

MongoDB聚合如何对对象数组中的值求和

MongoDB MQL,将列表一分为二,仅获取唯一值

MongoDB获取所有文档谁的S子文档只包含一个特定值?

Mongo 聚合查找 $gte 6 个月前的日期,以DD-MM-YYYY格式存储为字符串

Golang 无法在 MongoDB 中创建文档

根据聚合管道MongoDB Atlas触发器中的条件更新多个字段

使用 homebrew 和 Xcode 8.1.1 安装 Mongodb 失败

在mongoose中添加多个验证

具有最佳插入/秒性能的数据库?

Mongoid 有 Map/Reduce 吗?

从性能Angular 来看 MongoDB 嵌入式与参考

ExpressJS & Mongoose REST API struct :最佳实践?

在MongoDB中查询一个半​​径内的位置

Meteor订阅不更新集合的排序顺序

spring 数据MongoDB.生成id的错误

使用 Mongoose ORM 的杀手锏是什么?

与 mongoose/node.js 共享数据库连接参数的最佳方式