2016-04-19 2 views
0

Я использую библиотеку Mongoose с Node.js и функцию агрегации geoNear.Moongose ​​.geoNear aggregation, добавить основные параметры запроса

Вот мой кусок кода, который работает как шарм:

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

Теперь я хотел бы добавить основные параметры запроса, например, за исключением документов с MongoDB $nin вариант. Например, я хотел бы искать пользователей вокруг определенной позиции (как это было в моем примере), но с ограничением не сопоставляя некоторые данные ids. Как можно добавить такие варианты в мой запрос?

ответ

1

Вы можете сделать это с помощью структуры агрегации. Попытайтесь:

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.

+0

Это именно то, что я искал. Благодарю. – FrenchFalcon

+0

Вы знаете, могу ли я добавить метод select() после функции aggregate? – FrenchFalcon

+0

Что вы пытаетесь сделать? – Saleem

Смежные вопросы