В приложении nodejs с хранилищем mongodb у меня есть следующий запрос от пользователя:
const rawQuery = [
'{"field":"ingredient","type":"AND","value":"green and blue"}',
'{"field":"ingredient","type":"AND","value":"black"}',
'{"field":"ingredient","type":"OR","value":"pink"}',
'{"field":"ingredient","type":"OR","value":"orange"}',
'{"field":"place","type":"AND","value":"london"}',
'{"field":"school","type":"NOT","value":"fifth"}',
'{"field":"food","type":"OR","value":"burger"}',
'{"field":"food","type":"OR","value":"pizza"}',
'{"field":"ownerFirstName","type":"AND","value":"Jimmy"}'
];
У меня есть коллекция с именем restaurant, и коллекция с названием владельцев.
Будет этот запрос предназначен для обработки такого сценария поиска?
const query = {
$and: : [
{ ingredient: 'green and blue' },
{ ingredient: 'black' },
{ $or : [
{ ingredient: 'pink' },
{ ingredient: 'orange' },
]
},
{ place: 'london' },,
{ school: { $ne: 'fifth' } },
{ $or : [
{ food: 'burger' },
{ food: 'pizza' },
]
}
]
};
Как я могу преобразовать rawQuery в этот запрос mon go? (Учитывая, что это должен быть динамический c, потому что у меня много полей, и в этом примере я только включил пару из них.)
Этот пример запроса предназначен для получения ресторанов, которые соответствуют описанию / разместить / ресторан / запросы еды в ресторане, а также, чтобы соответствовать имени владельца из другой коллекции. Каждый документ ресторана будет иметь поле ownerUuid, указывающее на владельца в другой коллекции.
Как лучше всего выполнить поиск в mongodb для такого запроса в рабочей среде?
Как это может быть достигнуто с Elasticsearch?