1. ホーム
  2. mongodb

[解決済み] 条件付きでMongoDBを更新する

2022-02-14 19:59:41

質問

ある条件によって、コレクション内のあるフィールドを更新しようとしています。

フィールドを設定したい active から true である場合、その条件は true とし false その他

無条件で更新されます

db.consent.update(
{}, //match all
{
    $set: {
        "active": true
    }
}, 
{
    multi: true,
}

)

このように更新する条件を追加したいのですが。

db.consent.update(
{},
$cond: {
    if: {

        $eq: ["_id", ObjectId("5714ce0a4514ef3ef68677fd")]

    },
    then: {
        $set: {
            "active": true
        }
    },
    else: {
        $set: {
            "active": false
        }
    }
}, 
{
    multi: true,
}

)

によると https://docs.mongodb.org/manual/reference/operator/update-field/ はありません。 $cond 演算子で更新します。

このアップデートを1つのコマンドとして実行するには、どのような方法がありますか?

どのように解決するのですか?

<ストライク 無理です。

<ストライク Mongo は、update 文でのフィールドや条件文などの結合をサポートしていません。


参照 https://stackoverflow.com/a/56551655/442351 を以下に示します。