$ addToSet聚合和多个数组

时间:2016-05-25 12:22:18

标签: node.js mongodb

我有这个系列:

['id_probe_1', 'id_probe_2', 'id_probe_3']

我想得到一个这样的数组:

let find = [
    {
        $match: {
            _id: {
                $in: [new ObjectId('miId1'), new ObjectId('myId2')]
            }
        }
    },
    {
        $group: {
            _id: null,
            probes: {
                $addToSet: {
                    $each: '$probes'
                }
            }
        }
    }
];

所以我尝试这个请求(来自nodeJS驱动程序):

{{1}}

这不起作用,给我这个错误:

  

无效的运营商' $ each'

doc,他们提到它会将整个数组作为单个元素追加。

  

如果表达式的值是一个数组,$ addToSet会将整个数组附加为单个元素。

但是他们不会说如何拥有一个独特的阵列。所以我使用this page表示的$ each运算符(我不知道其中的差异......)

有没有办法让这项工作?

谢谢!

2 个答案:

答案 0 :(得分:2)

$unwind

之前插入$group
  {$unwind:"$probes"},

然后删除$each

答案 1 :(得分:2)

为什么不尝试不同的操作?在mongo shell中,db.col.distinct('probs');你可以在nodejs mongo驱动程序中尝试使用distinct函数。