例如 我find查询结果是[{uid:1},{uid:2}...]
怎么才能直接得到[1,2,3...]
只要你的数据库是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" } ] }
1 回答1.3k 阅读✓ 已解决
2 回答1.5k 阅读
1 回答1.4k 阅读
1 回答717 阅读
更建议在应用端做转换。原因如下:
实在要做可以考虑用Aggregation,但也不能完全达到你的要求,因为返回的必须是对象,而你要的是数组:
结果在
array
字段中。