Значение столбца условной проверки в mongodb

#mongodb #mongoose #mongodb-query #mongoose-schema

#mongodb #мангуст #mongodb-запрос #мангуст-схема

Вопрос:

У меня есть документ, подобный приведенному ниже

  [
    {
        "_id" : ObjectId("601992e354787877866"),
        "status" : 1,
        "user_id" : 2,
    
    },
    {
        "_id" : ObjectId("601992e354787877866"),
        "status" : 2,
        "user_id" : 2,
    
    },
    {
        "_id" : ObjectId("601992e354787877866"),
        "status" : 2,
        "user_id" : 3,
    
    },
     {
        "_id" : ObjectId("601992e354787877866"),
        "status" : 3,
        "user_id" : 4,
    
    }
    ]
 

столбец состояния может иметь значение 1, 2 или 3. Я хочу сопоставлять user_id только в том случае, если значение столбца статуса равно 2, а документ, имеющий статус, отличный от 2, будет отображаться в результате как есть.

Я пробовал с помощью запроса соответствия

  db.collection.find({"status" : 1});
 

Но оно будет соответствовать только статусу

Теперь, если мой идентификатор пользователя равен 2, вывод должен быть

 [
     {
            "_id" : ObjectId("601992e354787877866"),
            "status" : 1,
            "user_id" : 2,
        
        },
        {
            "_id" : ObjectId("601992e354787877866"),
            "status" : 2,
            "user_id" : 2,
        
        },
         {
            "_id" : ObjectId("601992e354787877866"),
            "status" : 3,
            "user_id" : 4,
        
        }
        ]
 

Здесь вы можете увидеть документ, статус которого равен 2, а идентификатор пользователя не равен 2, отсутствует в ожидаемом выводе, но для документа, статус которого отличается от 2, будет получен результат

Комментарии:

1. Это то, что вы хотите?. Также опубликуйте пример ввода и ожидаемый результат, чтобы лучше понять.

2. Обновил вопрос с более подробной информацией. Пожалуйста, проверьте

Ответ №1:

Вы могли бы использовать $or оператор: https://mongoplayground.net/p/y9vR2PEGYdI

 db.collection.find({
  $or: [
    {
      status: 2,
      user_id: 2
    },
    {
      status: {
        $ne: 2
      }
    }
  ]
})