在 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
详情请参阅游乐场
尝试使用
$unwind
和 $group
类似下面的内容
db.getCollection("test").aggregate([{$unwind: "$values"}, {$group: {_id: null, uniqueArray: {$addToSet: "$values"}}}, {$project: {"uniqueArray":1, _id: 0}}])