Json 如何在MongoDB中获取嵌套值?
我有一个3层嵌套文档,类似这样Json 如何在MongoDB中获取嵌套值?,json,mongodb,Json,Mongodb,我有一个3层嵌套文档,类似这样 { "_id" : ObjectId("5b5acaf0589ff6bfb5dd091f"), "date" : "2018/07/31", "clock" : [ { "time" : "10:12:02", "values" : [ { "name" : "A1003", "value" : "777" }
{
"_id" : ObjectId("5b5acaf0589ff6bfb5dd091f"),
"date" : "2018/07/31",
"clock" : [
{
"time" : "10:12:02",
"values" : [
{
"name" : "A1003",
"value" : "777"
},
{
"name" : "A0001",
"value" : "888"
}
]
},
{
"time" : "13:12:02",
"values" : [
{
"name" : "A1003",
"value" : "111"
}
]
}
]
}
我可以使用$gte
$lte
对日期进行排序,如下所示,并获取所有值
getData(name: string[], fromDate: string, toDate: string): Promise<{ message: string }> {
return this._mongoUtility.testDb
.then(db => {
let collection = db.collection('TestDoc');
let fromOnlyDate = fromDate.split(' ');
let toOnlyDate = toDate.split(' ');
return collection.find({
'date': {
$gte: `${fromOnlyDate[0]}`,
$lte: `${toOnlyDate[1]}`
}
}).toArray();
})
.catch(err => {
return Promise.reject({message: 'Data not found', err: err})
})
}
您可以使用聚合框架获得simmler结果(无法按值创建属性)
db.getCollection('sss').aggregate([
{$unwind:'$clock'},
{$unwind:'$clock.values'},
{$项目:{
日期:{$concat:[“$date”,”,“$clock.time”]},
值:'$clock.values.value',
名称:'$clock.values.name'
}}
])
很难理解您想要的是什么您可以添加所需的输出吗please@AmitWagner我已经编辑了上面的帖子。
0:{date: "2018/07/31 10:12:02", value-A1003: "777", value-A0001: "888"}
1:{date: "2018/07/31 13:12:02", value-A1003: "111"}