#javascript #node.js #mongodb #mongoose
#javascript #node.js #mongodb #мангуст
Вопрос:
У меня есть пользовательская модель, в которой я вызываю aggregate и нахожу пользователей в соответствии с указанным расстоянием и местоположением.
const user = await User.aggregate(
[{"$match":
{location:{$geoWithin: { $centerSphere: [ [ -79.7624177, 43.7315479 ], 100/6378.1 ] } },
}}
])
при вызове aggregate в моей модели я получил этот результат:
[
{ _id: 5fd8de1d3bcb9c8c903c78b5,
books: 5fd8e038ad6c8b8f20d2c88f,
email: 'user14@test.com',
firstName: 'user14',
password:
'$2b$10$DSfPujGGoqHMNs6ssbPYuur7s3Jl7lldC6G6C7alVdbA5fioI9dE.',
location:
{ coordinates: [Array],
_id: 5fd8de1d3bcb9c8c903c78b6,
type: 'Point' },
__v: 1 },
{ _id: 5fd8de4d3bcb9c8c903c78b7,
books: 5fd8e091ad6c8b8f20d2c896,
email: 'user13@test.com',
firstName: 'user13',
password:
'$2b$10$Je6vICzPUt7U.qCV0DMcT.zS4k.x5rzbg4cTpfBkxZ9/bL8w8u4eq',
location:
{ coordinates: [Array],
_id: 5fd8de4d3bcb9c8c903c78b8,
type: 'Point' },
__v: 2 },
{ _id: 5fd8de4d3bcb9c8c903c78b7,
books: 5fd8e094ad6c8b8f20d2c89b,
email: 'user13@test.com',
firstName: 'user13',
password:
'$2b$10$Je6vICzPUt7U.qCV0DMcT.zS4k.x5rzbg4cTpfBkxZ9/bL8w8u4eq',
location:
{ coordinates: [Array],
_id: 5fd8de4d3bcb9c8c903c78b8,
type: 'Point' },
__v: 2 },
{ _id: 5fd8ded13bcb9c8c903c78bb,
books: 5fd8dfc6ad6c8b8f20d2c888,
email: 'user11@test.com',
firstName: 'user11',
password:
'$2b$10$qq5WC9oodV82B1UllvWdZ.lZrRMkFsQrxBGn.8mY/uHTcSc4.thrq',
location:
{ coordinates: [Array],
_id: 5fd8ded13bcb9c8c903c78bc,
type: 'Point' },
__v: 1 } ]
Я хочу отфильтровать это также с помощью свойств книг, как я могу этого добиться?
Я попытался с помощью $ и
{books:{$eleMatch:{"title": {$eq: "JavaScript: The Definitive Guide" }}}}
Но я получаю пустой массив.
Комментарии:
1. Не могли бы вы, пожалуйста, улучшить форматирование запроса и выходных данных?
2. готово! доступно ли оно для чтения?
3. Намного лучше, спасибо!