Mongodb aggregate () как с несколькими условиями - PullRequest
0 голосов
/ 28 августа 2018

Ниже приведен наш действующий рабочий код:

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" } }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...