获取MongoDB中JSON数组的第n项
使用MongoDb,如何从下面返回日期和第三个“obs”获取MongoDB中JSON数组的第n项,json,mongodb,Json,Mongodb,使用MongoDb,如何从下面返回日期和第三个“obs” { "data" : [ { "val" : [ { "obs" : "2/3/2016" }, { "obs" : 41.8599992990494 }, { "obs" : 41.3111999630
{ "data" : [
{ "val" : [
{ "obs" : "2/3/2016"
},
{ "obs" : 41.8599992990494
},
{ "obs" : 41.3111999630928
},
{ "obs" : 5.048
}
]
},
{ "val" : [
{ "obs" : "2/4/2016"
},
{ "obs" : 39.394998550415
},
{ "obs" : 41.8486998975277
},
{ "obs" : NumberInt(0)
}
]
},
{ "val" : [
{ "obs" : "2/5/2016"
},
{ "obs" : NumberInt(0)
},
{ "obs" : 40.2090013027191
},
{ "obs" : 24.2410004138947
},
{ "obs" : 3.629
}
]
}
]
}
从这个开始:
db.myColl.find({},{"_id":0, "data.val.obs": 1, })
我想:
["2/3/2016", 41.3111], ["2/4/2016", 41.8486]
以下是如何从V3.4开始在MongoDB中实现这一点
db.getCollection('test').aggregate([
{
$addFields:{
数据:{
$map:{
输入:“$data”,
作为:“项目”,
在:{$concatarray:[{$slice:['$$item.val',1]},{$slice:['$$item.val',2,1]}中
}
}
}
}
]);代码>使用$unwind怎么样??你能把答案包括在内吗$project@Merlin不确定我们是否需要在这里使用$REWIND。例如,我们可以展开“数据”以获得混合在一起的不同记录的过滤val对象。但我看不出有什么特别的理由这么做。关于$project,我将在明天早上添加它。基本上,如果文档不仅具有数据属性,而且还具有例如data_2数组,那么$addFields将使其保持不变。与其他属性相同(如果有)。如果将$addFields替换为$project,则必须手动指定要保留的道具。