我试图只使用从Mongodb查询结果中获取值到数组中。
我的查询是
db.collection_name.find({"actual_time":{"$gt": start_date, "$lte": end_date}}, {'_id': False})
我的结果是
{
"result": [
{
"start": 7299.69,
"end": 7299.73,
"low": 7297.38,
"open": 7297.84,
"time": 1536007500,
"volumefrom": 16.98,
"volumeto": 123447.27,
},
{
"start": 7307.24,
"end": 7308.11,
"low": 7299.69,
"open": 7299.69,
"time": 1536007680,
"volumefrom": 78.7,
"volumeto": 575049.25,
}
]
}
但是我不想要这个结果。我想得到如下结果
{
"result": [
{
7299.69,
7299.73,
7297.38,
7297.84,
1536007500,
16.98,
123447.27,
},
{
7307.24,
7308.11,
7299.69,
7299.69,
1536007680,
78.7,
575049.25,
}
]
}
如何在Mongodb中编写查询?
答案 0 :(得分:1)
您可以在3.4中使用以下汇总。
在$let
上将$objectToArray
与$$ROOT
结合使用以提取键值。
db.collection_name.aggregate([
{"$match":{"actual_time":{"$gt":start_date,"$lte":end_date}}},
{"$project":{
"_id":0,
"keyvalues":{
"$let":{
"vars":{"dockv":{
"$filter":{
"input":{"$objectToArray":"$$ROOT"},
"cond":{"$not":{"$in":["$$this.k",["_id"]]}}
}
}},
"in":"$$dockv.v"
}
}
}},
{"$group":{"_id":null,"results":{"$push":"$keyvalues"}}}
])