MongoDB返回assoc数组的结果

我的collections有以下forms的对象

{'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做到这一点,或者我必须迭代结果来获得这种forms?

您可以尝试使用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" } }