如何使用环回模型查询来查询嵌套对象?

时间:2018-11-09 06:56:58

标签: node.js mongodb mongodb-query aggregation-framework loopback

我在mongodb上的表中以geojson格式将数据存储在名为“ Alerts”的表中

[
  {
   "_id" : ObjectId("5be40b8099d5b81e6115d517"),
   "title" : "Real-time earthquake",
   "priority" : "high",
   "status" : NumberInt("1"),          
   "extAlertData" : {
                     "type" : "Feature",
                       "properties" : {
                                       "mag" : 4.11,
                                       "place" : "12km S of Tres Pinos, 
                                                  CA",
                                        "time" : 1541163534230,
                                      },
                        "geometry" : {
                                      "type" : "Point",
                                      "coordinates" : [
                                                       -121.3146667,
                                                       36.6801667,
                                                       6.48
                                                      ]
                                    },
                        "id" : "nc73105276"
                     }
 }
 {
  "_id" : ObjectId("5be401c39b9e021a4c1a5c80"),
  "title" : "Real-time earthquake",
  "priority" : "high",
   "status" : NumberInt("1"),          
   "extAlertData" : {
                     "type" : "Feature",
                     "properties" : {
                                     "mag" : 4.5,
                                      "place" : "107km NW of Tobelo, 
                                         Indonesia",
                                       "time" : 1541665816710,
                                    },
                     "geometry" : {
                                    "type" : "Point",
                                     "coordinates" : [
                                           127.2763,
                                           2.3671,
                                           31.55
                                           ]
                                  },
                      "id" : "us1000hp6t"
                   }
   }
]

我想使用模型查询来检索嵌套在“ extAlertData”内部的字段“ id”和时间。

预期输出:

[
 {
   id:'nc73105276',
   time:'1541163534230'
 },
 {
   id:'us1000hp6t',
   time:'1541665816710'
 }
] 

以下查询无效。

db.Alerts.find({fields : {"extAlertData.id": true}},
                    function (err, Alerts){
                        //process alert extAlertData.id
                    }
});

查询正在检索以下错误:

TypeError: Cannot read property 'id' of undefined

如何在mongoDB中使用字段过滤器进行查询?我正在使用节点js的回送框架。

谢谢。

1 个答案:

答案 0 :(得分:0)

var yourdata =[];
var cursor = db.collection('Alerts').find();
            
            cursor.each(function(err, item) {

                if (item != null) {
                    var yourid = item.extAlertData.id;
		    var yourtime = item.extAlertData.properties.time;
		    var pushdata = {id: yourid,time: yourtime}; 		
		    yourdata.push(pushdata);	
                }
            });