使用MongoDb查询创建数组

9

我有这个集合

{
    "_id" : ObjectId("55555555ffffff000010200a"),  
    "name" : "foo"
}

{
    "_id" : ObjectId("55555555ffffff000010200e"),
    "name" : "bar"
}

{
    "_id" : ObjectId("55555555ffffff000010200f"),    
    "name" : "baz"
}


{
    "_id" : ObjectId("55555555ffffff000010200b"),
    "name" : "biz"
}

我希望得到一个id数组。

我已经完成了这个任务。

db.mycollection.find({}, {_id: 1})

并返回

{
    "_id" : ObjectId("55555555ffffff000010200a")
}

{
    "_id" : ObjectId("55555555ffffff000010200e")
}

{
    "_id" : ObjectId("55555555ffffff000010200f")
}

{
    "_id" : ObjectId("55555555ffffff000010200b")
}

{
    "_id" : ObjectId("55555555ffffff000010200c")
}

{
    "_id" : ObjectId("55555555ffffff0000103111")
}

我可以有一个数组吗? id['55555555ffffff0000103111','55555555ffffff0000103111','555555555ffffff0000103111','55555555ffffff0000103111']


我已经编辑了我的答案并提供了另一种选择。请检查是否更适合您所寻找的内容。 - Anand Jayabalan
2个回答

11

选项1:如果子文档数组可接受,您可以将.toArray()附加到查找查询中。

> db.test.find({}, {_id:1}).toArray()
[
        {
                "_id" : ObjectId("53270b12d111b9bf595f4270")
        },
        {
                "_id" : ObjectId("53270b14d111b9bf595f4271")
        },
        {
                "_id" : ObjectId("53270b16d111b9bf595f4272")
        }
]

选项2:另一个选择是使用聚合框架

> db.test.aggregate([{$group:{_id:null, ids:{$push:"$_id"}}}, {$project:{_id:0, ids:1}}])
{
        "result" : [
                {
                        "ids" : [
                                ObjectId("53270b12d111b9bf595f4270"),
                                ObjectId("53270b14d111b9bf595f4271"),
                                ObjectId("53270b16d111b9bf595f4272")
                        ]
                }
        ],
        "ok" : 1
}

选项3:或者您可以在shell中使用forEach,如下所示:

> var myIds = new Array()
> db.test.find({},{_id:1}).forEach(function(myDoc){myIds.push(myDoc._id.str)})
> myIds
[
        "53270b12d111b9bf595f4270",
        "53270b14d111b9bf595f4271",
        "53270b16d111b9bf595f4272"
]

1

使用 distinct 将单列转换为数组:

db.mycollection.distinct('_id', function(err, list){
 //list is an array of ObjectId
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接