猿问

有没有人遇到过这个问题哈!MongoDB find 使用?各位有什么建议?

例如我find查询结果是[{uid:1},{uid:2}...]怎么才能直接得到[1,2,3...]
撒科打诨
浏览 348回答 2
2回答

慕田峪7331174

更建议在应用端做转换。原因如下:并不知道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

相关分类

JavaScript
我要回答