如何从所选文档中获取嵌套对象?
如果这是我的文档,我使用Collection.findOne({ _id: 'dZXr2Pg7Ak4M5aYWF'})
...
{
"_id" : "dZXr2Pg7Ak4M5aYWF",
"points" : [
{
"id" : "Gwf5BzorXyYBZSEzK",
"coordinates" : [
433,
215
],
"content" : "anything"
},
{
"id" : "iwSM98W5PD87BtcLa",
"coordinates" : [
666,
186
]
}
]
}
...我需要获取id为Gwf5BzorXyYBZSEzK的点的完整数据。所以我的结果应该是这样的:
result = {
"id" : "Gwf5BzorXyYBZSEzK",
"coordinates" : [
433,
215
],
"content" : "anything"
}
答案 0 :(得分:0)
您只需使用Array.prototype.filter
过滤points
数组,就像这样
console.log(data.points.filter(function(obj) {
return obj.id === "Gwf5BzorXyYBZSEzK";
})[0]);
// { id: 'Gwf5BzorXyYBZSEzK' coordinates: [ 433, 215 ], content: 'anything' }
我们只从过滤后的结果数组中取出第一个元素。如果你想获得具有特定id的所有元素,那么只需删除下标。
如果您的环境支持ECMAScript 2015's Arrow functions,那么您可以将其写为
console.log(data.points.filter((obj) => obj.id === "Gwf5BzorXyYBZSEzK")[0]);
答案 1 :(得分:0)
var data = {
"_id": "dZXr2Pg7Ak4M5aYWF",
"points": [{
"id": "Gwf5BzorXyYBZSEzK",
"coordinates": [433, 215],
"content": "anything"
}, {
"id": "iwSM98W5PD87BtcLa",
"coordinates": [666, 186]
}]
};
function finder(id){
for(i=0;i<data.points.length;i++){
if(data.points[i].id==id){
return data.points[i];
}
}
}
var result = finder("Gwf5BzorXyYBZSEzK");
document.write(JSON.stringify(result));