복붙노트

[MONGODB] 조건 MongoDB를 업데이트

MONGODB

조건 MongoDB를 업데이트

나는 조건에 따라 내 컬렉션의 일부 필드를 업데이트하기 위해 노력하고있어.

조건이 그렇지 않은 경우는 false에 충실하고 있다면 true로 활성 세트 필드에 원하는

이 조건없이 업데이트입니다

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/에 따르면 업데이트에는 $ 콘드 운영자가 없다.

내 옵션은 하나의 명령으로이 업데이트를 실행하기 위해 여기에 무엇입니까?

해결법

  1. ==============================

    1.당신은 할 수 없습니다.

    당신은 할 수 없습니다.

    몽고는 업데이트 문에서 조건문 등을 결합 필드를 지원하지 않습니다.

  2. ==============================

    2.당신은 당신이 MongoDB의 버전이있는 경우 findAndModify () 또는 findOneAndUpdate ()를 사용하여 조건부로 MongoDB의 문서를 업데이트 할 수 있습니다 3.2 이상

    당신은 당신이 MongoDB의 버전이있는 경우 findAndModify () 또는 findOneAndUpdate ()를 사용하여 조건부로 MongoDB의 문서를 업데이트 할 수 있습니다 3.2 이상

  3. ==============================

    3.몽고 4.2 시작, db.collection.update ()는 마지막으로 다른 필드를 기준으로 필드의 업데이트 / 생성을 허용 집계 파이프 라인을 받아 들일 수 있습니다 :

    몽고 4.2 시작, db.collection.update ()는 마지막으로 다른 필드를 기준으로 필드의 업데이트 / 생성을 허용 집계 파이프 라인을 받아 들일 수 있습니다 :

    // { a: "Hello", b: "World" }
    // { a: "Olleh", b: "Dlrow" }
    db.collection.update(
      {},
      [ { $set: { active: { $eq: [ "$a", "Hello" ] } } } ],
      { multi: true }
    )
    // { a: "Hello", b: "World", active: true  }
    // { a: "Olleh", b: "Dlrow", active: false }
    
  4. ==============================

    4.물론 당신은 할 수.... 이 쿼리를 실행하여

    물론 당신은 할 수.... 이 쿼리를 실행하여

    db.collection.update({condition}, { $set: { state } }, { multi: true });
    db.collection.update({!condition}, { $set: { state } }, { multi: false });
    

    귀하의 예제 케이스

    db.consent.update(
      {"_id": ObjectId("5714ce0a4514ef3ef68677fd")},
      { $set: { "active": true } });
    
    db.consent.update(
      {"_id": {$ne: ObjectId("5714ce0a4514ef3ef68677fd")}},
      { $set: { "active": false } },
      { multi: true });
    
  5. from https://stackoverflow.com/questions/36698569/mongodb-update-with-condition by cc-by-sa and MIT license