从 mongo 文档的字符串数组中查找所有唯一值

问题描述 投票:0回答:1

在 mongo 集合中,我想从字符串数组中收集所有不同的值。文档告诉我 $reduce 函数是正确的方法,但我没有看到我的错误。

{
  _id: 1,
  values: ['1','2','4']
},
{
  _id: 2,
  values: ['1','3','5']
}

所需的输出是一个简单的

['1','2','3','4','5']
数组,其中所有字符串都是唯一的。

我的尝试(我正在尝试在nodeJS中执行此操作):

db.collection
      .aggregate([
        {
          $project: {
            'values': {
              $reduce: {
                input: '$values',
                initialValue: [],
                in: { $concatArrays: ['$$value', '$$this'] }
              }
            }
          }
        }
      ])

错误:

$concatArrays only supports arrays, not string

详情请参阅游乐场

node.js mongodb mongodb-query aggregation-framework
1个回答
0
投票

尝试使用

$unwind
$group
类似下面的内容

db.getCollection("test").aggregate([{$unwind: "$values"}, {$group: {_id: null, uniqueArray: {$addToSet: "$values"}}}, {$project: {"uniqueArray":1, _id: 0}}])

© www.soinside.com 2019 - 2024. All rights reserved.