数组我们知道,如果我们想获得_id的数组,我们可以这样做:MongoDB的骨料项目返回_id
db.collections.distinct("_id");
我的问题是怎样才能得到_id数组,如果我需要做的一个复杂的聚合逻辑。 例如:
db.getCollection('users').aggregate({
$match : {
is_register_completed : { $ne : true}
}
}
//other operator like $lookup, $group
,
{
$project : {_id:1}
}
)
我得到
{
"_id" : "1",
"_id" : "2"
}
我想要的是就像我们做不同的
{[1,2]}
更新: 这是我尝试用$组办
db.getCollection('users').aggregate({
$match : {
is_register_completed : { $ne : true}
}
},
{
$group: {
_id:null, all:{$addToSet: "$_id"}
}
}, {$project: {_id:0,all:1}}
)
,但我仍然得到
{
all : ["1","2"]
}
或得到
{
"_id" : "1",
"_id" : "2"
}
后,我可以做.map(function(el) { return el._id })
,但地图是客户端转换,我认为这会影响性能。
能否请你把你的问题的“编辑”或“更新”标签的新更新的代码?我的回答可能会在你的问题中已经包含的印象下得到低估。 –
对于'distinct()',您只需获取一组元素'[1,2]',而不是'{[1,2]}',因为您暗示这显然是无效的JSON。您可以操纵从聚合操作获得的结果以返回数组。 – chridam
@chridam是[1,2]是我想要的,就像我提到的我不喜欢在客户端使用map来操作结果。 –