【问题标题】:$project multiple fields into one field$project 多个字段合并为一个字段
【发布时间】:2016-12-09 01:46:11
【问题描述】:

我正在使用 MongoDB 3.0(我们要到明年才会升级。)我需要获取集合中多个字段的唯一值列表。这些字段大部分时间都具有相同的值。这可以在 3.2 版中通过以下方式完成:

db.mydata.aggregate([
  {'$project': {'combined_users': ['$user1', '$user2']}},
  {'$unwind': '$combined_users'},
  {'$group': {_id: 1, {$addToSet: '$combined_users'}}}

问题出在 3.0 版中,我们在 combine_data 中得到“不允许的字段类型数组...”。

我如何在 Mongo 3.0 中完成同样的事情?

【问题讨论】:

标签: mongodb mongodb-query aggregation-framework


【解决方案1】:

您需要使用$setUnion 运算符

db.mydata.aggregate([
    {'$project': { 'combined_users': { "$setUnion": ['$user1', '$user2'] }}}
])

【讨论】:

  • 我承认,我不知道 $setUnion。谢谢你。我的 user1user2 字段不是数组,所以我先对它们进行了分组。
  • 最终:db.mydata.aggregate([ {$group: { _id: 1, user1: {$addToSet: "$user1"}, user2: {$addToSet: "$user2"}} , {'$project': {'combined_users': {$setUnion: ['$user1', '$user2']}}} ])
猜你喜欢
  • 1970-01-01
  • 2018-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多