mongodb 中的条件检查列值

Conditional check column value in 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,
    
    }
    ]

status 列可以有值 1、2 或 3。我只想匹配 user_id 仅当 status 列值为 2 并且状态不是 2 的文档将按原样出现。

我试过匹配查询

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

但是只会匹配状态

现在如果我的用户 id 是 2 那么输出应该是 b

[
     {
            "_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 并且 user_id 不等于 2 的文档不在预期输出中,但是对于状态不是 2 的文档将会出现结果

您可以使用 $or 运算符:https://mongoplayground.net/p/y9vR2PEGYdI

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