Допустим, у меня есть следующие документы в моей коллекции "Запрос":
{
pickup: {
coords: null
},
meetup: {
coords: [ someLng, someLat ]
}
},
{
pickup: {
coords: null
},
meetup: {
coords: [ someLng, someLat ]
}
},
{
pickup: {
coords: [ someLng, someLat ]
},
meetup: {
coords: [ someLng, someLat ]
}
}
Цель состоит в том, чтобы отобразить пользователю отсортированный список запросов по расстоянию от его позиции от ближайшего к дальнему.
Если доступно pickup.coords
, его следует использовать как ссылку на позицию для последующих выражений, в противном случае принять meetup.coords
.
Я пытался использовать $cond
, но я получаю сообщение об ошибке, и я не уверен, как именно его использовать.
Вот то, что я думал, может работать:
const query = {
$cond: {
if: {
'pickup.coords': { $exists: true }
},
then: {
// use pickup.coords as reference for distance to user
},
else: {
// use meetup.coords as reference for distance to user
}
}
}
const requests = await Request.find( query )
Ошибка: unknown top level operator: $cond
В конце запрос будет намного сложнее, потому что я сделаю некоторую нумерацию страниц с limit
и использую оператор $near
с некоторым индексированием, я думаю. Но было бы неплохо сделать этот первый шаг: -)
Любая помощь будет принята с благодарностью!