以下是我们的实际工作代码:
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" } }