在聚合附近,添加基本查询选项

Moongose .geoNear aggregation, add basic query options

本文关键字:查询 选项 添加      更新时间:2023-09-26

我正在使用带有Node.jsMongoose库和geoNear聚合函数。

这是我的一段代码,它的工作原理很有魅力:

User.geoNear({ type: "Point", coordinates: [geo.lon, geo.lat] }, {
    spherical: true,
    maxDistance: 50,
  }, function(err, results, stats) {
    if (err) {
      // handle err
    }
}

现在我想添加一些基本的查询选项,例如使用mongodb $nin选项排除文档。例如,我想搜索给定位置周围的用户(就像我在示例中所做的那样),但有一个限制,即不匹配某些给定的ids。怎么可能将这种选项添加到我的查询中?

您可以使用聚合框架。尝试:

db.collection.aggregate(
[
    {
        '$geoNear': {
            'near': {
                'type': 'Point',
                'coordinates': [ -77.395410 , 38.967995 ]
            },
            'spherical': true, 
            'distanceField': 'dist',
            'maxDistance': 5000         
        }
    },
    {
      $match:{_id:{$nin: [ObjectId("5716163704ca42c7b579c7e3")]}}
    }
]);

上面的查询将搜索半径为5000米的所有文档,并排除给定_id的文档。