MongoDB find 怎么输出数组?

例如 我find查询结果是[{uid:1},{uid:2}...]
怎么才能直接得到[1,2,3...]

慕无忌1623718
浏览 647回答 2
2回答

沧海一幻觉

更建议在应用端做转换。原因如下:并不知道find结果有多少条,所以转换出来的数组不确定有多大。极端情况下会超过16MB;find结果本来是个游标,要进行这个转换就必须把游标包含的数据全部读进内存中,对数据库性能不好;实在要做可以考虑用Aggregation,但也不能完全达到你的要求,因为返回的必须是对象,而你要的是数组:db.coll.aggregate([     {$match: {...}}, //查询条件     {$group: {_id: null, array: {$push: "$uid"}}} ]);结果在array字段中。

猛跑小猪

只要你的数据库是3.4.4以上的话直接调用$objectToArray 就可以了。# 数据:{ "_id" : 2, "item" : "ABC2",  dimensions: { l: 50, w: 25, uom: "cm" } }{ "_id" : 3, "item" : "XYZ1",  dimensions: { l: 70, w: 75, uom: "cm" } }# 查询:db.inventory.aggregate(   [      {         $project: {            item: 1,            dimensions: { $objectToArray: "$dimensions" }         }      }   ])# 结果:{ "_id" : 2, "item" : "ABC2", "dimensions" : [ { "k" : "l", "v" : 50 }, { "k" : "w", "v" : 25 }, { "k" : "uom", "v" : "cm" } ] }{ "_id" : 3, "item" : "XYZ1", "dimensions" : [ { "k" : "l", "v" : 70 }, { "k" : "w", "v" : 75 }, { "k" : "uom", "v" : "cm" } ] }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MongoDB