Сравните два ключа документа mongodb, если третий ключ верен - PullRequest
1 голос
/ 11 февраля 2020

У меня есть такой документ, я использую mon go 3.6 и агрегацию.

[
   {
      id: 123,
      isLimit: "YES",
      maxUserCanComment: 10,
      commentCount: 6 
   },
   {
      id: 124,
      isLimit: "NO",
      maxUserCanComment: 0,
      commentCount: 3 
   },
   {
      id: 125,
      isLimit: "YES",
      maxUserCanComment: 3,
      commentCount: 5 
   }
]

Мне нужен документ, который документ, если isLimit == "NO" возьмите его и если isLimit == "ДА", сначала проверьте commentCount

[
   $expr: { $gt: ["$commentCount", "$maxUserCanComment"] } // and also tried to add ithis in $cond
]

1 Ответ

3 голосов
/ 11 февраля 2020

Вам необходимо использовать $or здесь оператор запроса, тогда вы можете использовать $expr внутри него.

db.collection.find({
  "$or": [
    { "isLimit": "NO" },
    {
      "isLimit": "YES",
      "$expr": {
        "$gt": [
          "$commentCount",
          "$maxUserCanComment"
        ]
      }
    }
  ]
})

MongoPlayground

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...