簡體   English   中英

Mongodb 條件與 $or 和 $eq

[英]Mongodb condition with $or and $eq

我正在嘗試使用此條件為 user_id 字段設置優先級(優先級為我想成為優先級的 id)

$cond: {
      if: {
        $or: {
          $eq: [
            "$user_id",
            ObjectId('5e9619084ad04327e4295b2c')
          ],
          $eq: [
            "$user_id",
            ObjectId('5e9618f04ad04327e4295b27')
          ]
        }
      },
      then: 1,
      else: -1
    }
}

但僅當用戶 ID 為: 5e9618f04ad04327e4295b27 ($or 條件中的第二個)時,它才給我優先級 1。

問題是什么?

您有語法錯誤。 $or在您傳遞單個 object 時需要一系列條件,這就是為什么只應用最后一個條件的原因,請嘗試:

{
    $cond: {
        if: {
            $or: [ 
                { $eq: ["$user_id", ObjectId('5e9619084ad04327e4295b2c') ] }, 
                { $eq: ["$user_id", ObjectId('5e9618f04ad04327e4295b27') ] }, 
            ]
        },
        then: 1,
        else: -1
    }
}

您還可以簡化代碼並使用$in

{
    $cond: {
        if: { $in: [ "$user_id", [ObjectId('5e9619084ad04327e4295b2c'), ObjectId('5e9618f04ad04327e4295b27')] ] },
        then: 1,
        else: -1
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM