Ниже приведен наш действующий рабочий код:
properties = await Property.aggregate([
{ $match: {
"status": {"$in": status}
} },
{ $unwind: "$category"},
{ $lookup: {
from: "users",
localField: "user",
foreignField:"_id", as: "user"
} },
{ $lookup: {
from: "categories",
localField: "category",
foreignField: "_id",
as: "category"
} },
{ $match: {
"category": { $ne: [] }
} }
]).collation({ locale: "en" })
.sort({ 'property_name': ordered_sort })
.limit(perpage)
.exec();
Мы хотели бы добавить несколько условий вместо одного состояния.
Мы попробовали метод ниже, как мы можем использовать в методе find (), но он не работает.
properties = await Property.aggregate([
{ $match : {
$and: [
{
$or: [
{ first_name: { "$regex": keyword, "$options": "i" } }
]
},
{ "status": { "$in": status } }
]
} },
{ $unwind: "$category"},
{ $lookup: {
from: "users",
localField: "user",
foreignField: "_id",
as: "user"
} },
{ $lookup: {
from: "categories",
localField: "category",
foreignField: "_id",
as: "category"
} },
{ $match: {
"category": { $ne: [] }
} }
]).collation({ locale: "en" })
.sort({ 'property_name':ordered_sort })
.limit(perpage)
.exec();
Поскольку модель местоположения имеет столбец пользователя, мы можем сравнить его с пользователем, как показано ниже:
5aa61806769e71326ccfe8f7 - это objectId одного из значений столбца для пользователя. поэтому мы можем добавить условие для этого. мы можем добавить как ниже в любом состоянии?
{ user: { "$regex": '5aa61806769e71326ccfe8f7', "$options": "i" } }