Метод find () в mongodb возвращает неопределенное значение - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь создать маршрут для получения записей с близлежащими координатами местоположения. Я проверил журналы и нашел значение "docs" как неопределенное. Что у меня не так?

router.get('/userlist/:lat/:lng', function (req, res) {
    var db = req.db;
    var lat = req.params.lat, lng = req.params.lng;
    console.log("lat "+lat);
    console.log("lng "+lng);
    var collection = db.get('userlist');
    collection.find({
        "location": {
         $nearSphere: {
           $geometry: {
              type: "Point" ,
              coordinates: [ lat , lng ]
           }
         }
       }
    }, {}, function (e, docs) {      
        docs = JSON.stringify(docs);
        console.log("docs "+docs);
        res.send(docs);        
    });
});

Я храню данные JSON, как показано на скриншоте ниже.

I am storing my data as follows

Ответы [ 2 ]

1 голос
/ 21 января 2020

Местоположение должно храниться в формате: -

"location" : {
        "type" : "Point",
        "coordinates" : [ 
            -70.845654, 
            42.146249
        ]
    }

Точка geo json должна быть объектом, а не массивом.

0 голосов
/ 22 января 2020

Как сказал @Webdev, координаты хранятся в виде строк и не должны быть. Но я не смог сохранить их в виде цифры c, используя mon goose. Поэтому я разбираю широту и долготу в float в самом запросе find, и он работает.

...