У меня возникла небольшая проблема с некоторыми данными, которые я храню в своей MongoDB (Примечание: я использую mongoose в качестве ODM). У меня есть две схемы:
mongoose.model('Buyer',{
credit: Number,
})
а также
mongoose.model('Item',{
bid: Number,
location: { type: [Number], index: '2d' }
})
Покупатель/Товар будет иметь ассоциацию родитель/потомок с отношением один ко многим. Я знаю, что могу настроить элементы как встроенные вложенные документы в документ покупателя или я могу создать два отдельных документа со ссылками идентификаторов объектов друг на друга.
Проблема, с которой я столкнулся, заключается в том, что мне нужно запрашивать товары, где ставка ниже кредита покупателя, но также и где местоположение находится рядом с определенной географической координатой.
Кажется, чтобы удовлетворить первым критериям, я должен встроить Items в качестве поддокумента, чтобы я мог сравнить два числа. Но, чтобы сравнивать местоположения с помощью запроса geoNear, кажется, было бы лучше разделить документы, иначе я не могу выполнить geoNear для каждого поддокумента.
Есть ли способ выполнить обе задачи с этими данными? Если да, то как мне структурировать данные? Если нет, есть ли способ выполнить один запрос, а затем второй запрос по результату первого запроса?
Спасибо за вашу помощь!