MongoDB返回assoc数组的结果

时间:2015-05-14 07:23:31

标签: node.js mongodb

我的收藏品有以下表格的对象

{'id':2, 'name':'john', 'avatar':'img.png'},
{'id':3, 'name':'chriss', 'avatar':'img2.png'}

在我查询mongo之后,我想得到以下结果

{'2': {'id':2, 'name':'john', 'avatar':'img.png'}, '3':{'id':3, 'name':'chriss', 'avatar':'img2.png'}}

是否可以使用mongo执行此操作,还是必须迭代结果以获取此表单?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用find()光标的forEach()方法迭代结果,如下所示:

var obj = {};
db.collection.find({}, {"_id": 0}).forEach(function(doc){
    obj[doc.id.toString()] = doc;
});
printjson(obj);

或使用map()方法:

var mapped = db.collection.find({}, {"_id": 0}).map(function(doc){
    var obj = {};
    obj[doc.id.toString()] = doc;
    return obj;
});
printjson(mapped);

两种方法的输出

{
        "2" : {
                "id" : 2,
                "name" : "john",
                "avatar" : "img.png"
        },
        "3" : {
                "id" : 3,
                "name" : "chriss",
                "avatar" : "img2.png"
        }
}