У меня есть две коллекции, я только включил соответствующие поля. Список коллекции
ListSchema = new Schema({
location: {
zip: Number,
city: String,
province: String,
address: String
}
})
Коллекция аддонов
AddonSchema = new Schema({
extra_loc: {
type: Array
}
})
Я хочу найти, присутствует ли данная частичная строка в location fields
или extra_loc
, и вернуть List
это соответствует. Мой текущий код соответствует только location fields
. это дает мне желаемый результат, если он находит совпадение. Но с правильным запросом, который должен соответствовать элементу в extra_loc
, возвращается пустой массив.
версия mongoose: 5.7.1,
List.aggregate([
{
$lookup:
{
from: "addons",
localField: "location",
foreignField: "extra_loc",
as: "extras"
}
},
{
$match: {
$or: [
{
"location.zip": {
$regex: query,
'$options': 'i'
}
},
{
"location.city": {
$regex: query,
'$options': 'i'
}
},
{
"location.province": {
$regex: query,
'$options': 'i'
}
},
{
"location.address": {
$regex: query,
'$options': 'i'
}
},
{
'extras.extra_loc': {
$in: [query]
}
}
]
}
}
], (err, data) => {
if (err) {
return res.json(err)
}
List.populate(data, { path: 'feature', select: 'geometry type' }, (err, populatedData) => {
if (err) {
return res.json(err)
}
if (populatedData) {
res.json(populatedData)
}
})
});
Я ожидаю, что код даст мне совпадение, если мойзапрос соответствует элементу в extra_loc
.