MongoDB的aggregate()如何多种条件

时间:2018-08-28 15:00:12

标签: node.js mongodb express mongoose mongodb-query

以下是我们的实际工作代码:

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" } }

0 个答案:

没有答案