【发布时间】:2016-05-25 20:51:31
【问题描述】:
我有这个收藏:
[
{
_id: ObjectId('myId1'),
probes: ['id_probe_1', 'id_probe_2']
},
{
_id: ObjectId('myId2'),
probes: ['id_probe_1', 'id_probe_3']
}
]
我想得到一个这样的数组:
['id_probe_1', 'id_probe_2', 'id_probe_3']
所以我尝试了这个请求(来自 nodeJS 驱动程序):
let find = [
{
$match: {
_id: {
$in: [new ObjectId('miId1'), new ObjectId('myId2')]
}
}
},
{
$group: {
_id: null,
probes: {
$addToSet: {
$each: '$probes'
}
}
}
}
];
这不起作用,给我这个错误:
无效的运算符'$each'
来自doc,他们提到它将把整个数组作为单个元素附加。
如果表达式的值是一个数组,$addToSet 将整个数组追加为一个元素。
但他们没有说如何拥有一个独特的数组。所以我使用像this page 这样的$each 运算符表示(我真的不知道有什么区别......)
有没有办法让这个工作?
谢谢!
【问题讨论】: