例如我find查询结果是[{uid:1},{uid:2}...]怎么才能直接得到[1,2,3...]
2 回答
慕田峪7331174
TA贡献1828条经验 获得超13个赞
更建议在应用端做转换。原因如下:并不知道find结果有多少条,所以转换出来的数组不确定有多大。极端情况下会超过16MB;find结果本来是个游标,要进行这个转换就必须把游标包含的数据全部读进内存中,对数据库性能不好;实在要做可以考虑用Aggregation,但也不能完全达到你的要求,因为返回的必须是对象,而你要的是数组:db.coll.aggregate([{$match:{...}},//查询条件{$group:{_id:null,array:{$push:"$uid"}}}]);结果在array字段中。
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
只要你的数据库是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"}]}
添加回答
举报
0/150
提交
取消