NodeJs:MongoDb中$ geoNear中的$ nin数组查询不起作用

时间:2017-04-10 08:37:16

标签: node.js mongodb mongoose mongodb-query

我不明白为什么我的查询不能与MongoDb $ geoNear一起使用?

我检查了这个问题没有成功:mongodb geoNear command with filter

我的环境:

  • NodeJs:V6.6.0
  • 猫鼬:4.8.6

此作品

db.collection.geoNear(
  coords,
  {
  query : { status: "1" } }, // I have the good filtered results
  ...

我已经测试了

...
query : { _id: { $in: itemIds } }, //no error and empty result
query : { "_id": "5639ce8c01f7d527089d2a74" },  //no error and empty result
query : { "_id" : 'ObjectId("5649e9f35f0b360300cad022")' }, //no error and empty result
query : { "_id" : ObjectId("5649e9f35f0b360300cad022") }, //error ObjectId not defined
...

我想要

db.collection.geoNear(
  coords,
  {
  query : { _id: { $nin: poiIds } }, // no error but I have not the good results because I obtain all results geolocalized
  ...

谢谢; - )

2 个答案:

答案 0 :(得分:0)

对于这个问题:

  

查询:{" _id" :ObjectId(" 5649e9f35f0b360300cad022")},//错误ObjectId未定义

尝试:

const ObjectID = require('mongodb').ObjectID

答案 1 :(得分:0)

就我而言,我是这样做的:

为模型中的坐标添加索引,然后请求查询。

modelSchema.index({ coords: '2dsphere' });

query = {
  _id: {
    $nin: poiIds
  },
  coords: {
    $near: {
      $geometry: { type: "Point", coordinates: position }
    }
  }
}

其中position是数组[Lat, Lon]

希望这会有所帮助。 ;)