我有一些文档,这些文档的字段包含可以重复的值的数组。我想使用与该数组的唯一值相对应的额外字段来转换这些文档。我尝试了聚合+ addToSet,但没有成功。
数据:
{...,"random_integers" : [1,1,2,3,3]},{...,"random_integers" : [2,4,5,6]},"random_integers" : [9,9,8,7,7]}
期望:
{
...
"random_integers" : [1,3],"unique_integers" : [1,},{
...
"random_integers" : [2,6],"unique_integers" : [2,{
...
"random_integers" : [9,7],"unique_integers" : [7,9],}
尝试使用聚合+ addToSet():
# Query
db.getcollection().aggregate([
{
$group: {
_id: '$_id',unique_integers: {$addToSet: '$random_integers' }
}
}
])
# Results
{...,"unique_integers" : [[1,3]]},"unique_integers" : [[2,6]]},"unique_integers" : [[9,7]]}
$ addToSet将整个列表添加到集合中,而不是数组中的每个元素。我尝试将$ addToSet与$ each结合使用,但是在群组中mongo无法识别它:
# Query
db.getcollection().aggregate([
{
$group: {
_id: '$_id',unique_integers: {$addToSet: { $each: '$random_integers' }}
}
}
])
# Error
Error: command failed: {
"ok" : 0,"errmsg" : "Unrecognized expression '$each'","code" : 168,"codeName" : "InvalidPipelineOperator"
} : aggregate failed