MongoDB-转换数组字段以进行设置

我有一些文档,这些文档的字段包含可以重复的值的数组。我想使用与该数组的唯一值相对应的额外字段来转换这些文档。我尝试了聚合+ 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 
wangdahan 回答:MongoDB-转换数组字段以进行设置

db.ints.aggregate( [
  { $project: { 
        random_integers: 1,unique_integers: { $setIntersection: [ "$random_integers","$random_integers" ] },_id: 0 
  } }
] )
本文链接:https://www.f2er.com/3079041.html

大家都在问