2

I have this data on mongodb in a table named "Alerts" in geojson format

[
  {
   "_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"
                   }
   }
]

I want to retrieve the field "id" which is nested inside "extAlertData" and time using model query.

Expected Output :

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

Following query does not working.

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

Query is retrieving the following error:

TypeError: Cannot read property 'id' of undefined

How can I query using fields filter in mongoDB? I am using loopback framework of node js.

Thanks in advance.

2
  • You can use $group aggregation stage with $push accumulator. Something like this db.collection.aggregate([ { "$group": { "_id": null, "ids": { "$push": { "id": "$extAlertData.id", "time": "$extAlertData.properties.time" } } }} ]) Commented Nov 9, 2018 at 7:16
  • @AnthonyWinzlet thank you so much.Its working perfect. Commented Nov 9, 2018 at 9:13

1 Answer 1

1

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);	
                }
            });

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.