我有这个系列:
['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运算符(我不知道其中的差异......)
有没有办法让这项工作?
谢谢!
答案 0 :(得分:2)
在$unwind
$group
{$unwind:"$probes"},
然后删除$each
答案 1 :(得分:2)
为什么不尝试不同的操作?在mongo shell中,db.col.distinct('probs');
你可以在nodejs mongo驱动程序中尝试使用distinct函数。