MongoDB 업데이트 조건
조건에 따라 컬렉션의 일부 필드를 업데이트하려고 합니다.
필드를 설정하고 싶습니다.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
업데이트할 연산자입니다.
이 업데이트를 단일 명령으로 실행하기 위한 옵션은 무엇입니까?
시작하는Mongo 4.2
집계db.collection.update()
파이프라인을 수락할 수 있으며, 마지막으로 다른 필드를 기준으로 필드를 업데이트/생성할 수 있습니다.
// { a: "Hello", b: "World" }
// { a: "Olleh", b: "Dlrow" }
db.collection.updateMany(
{},
[ { $set: { active: { $eq: [ "$a", "Hello" ] } } } ]
)
// { a: "Hello", b: "World", active: true }
// { a: "Olleh", b: "Dlrow", active: false }
첫 번째 파트
{}
업데이트할 문서(이 경우 모든 문서)를 필터링하는 일치 쿼리입니다.제2부
[ { $set: { active: { $eq: [ "$a", "Hello" ] } } } ]
업데이트 집계 파이프라인입니다(집계 파이프라인 사용을 나타내는 대괄호 참조).$set
의 새 집계 연산자 및 별칭입니다.$addFields
그러면 임의의 집계 연산자를 사용할 수 있습니다.$set
단계; 우리의 경우, 새로운 것에 사용할 값에 따라 달라지는 조건부 평등 검사.active
들판.
집계 파이프라인을 사용하여 수행할 수 있습니다.여기서 저는 남성에서 여성으로, 여성에서 남성으로 업데이트하고 있습니다.
db.customer.updateMany(
{ },
[
{ $set: { gender: { $switch: {
branches: [
{ case: { $eq: [ "$gender", 'male' ] }, then: "female" },
{ case: { $eq: [ "$gender", 'female' ] }, then: "male" }
],
default: ""
} } } }
]
)
그럴수는 없어요.
Mongo는 update 문의 필드, 조건 등의 조합을 지원하지 않습니다.
아래의 https://stackoverflow.com/a/56551655/442351 을 참조하십시오.
MongoDB 버전 3.2+가 있는 경우 findAndModify()를 사용하여 MongoDB 문서를 조건부로 업데이트하거나 OneAndUpdate()를 찾을 수 있습니다.
물론 2개의 쿼리를 실행하면...
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 });
db.consent.update(
{
//YOUR CONDITIONAL HERE TO APLLAY UPDATE ONLY IF CONDITIONAL HAPPEN, SO THE "active": true WILL BE APPLY.
},
{
$set: {
"active": true,
"active2": FALSE,
}
},
{
multi: true,
}
)
언급URL : https://stackoverflow.com/questions/36698569/mongodb-update-with-condition
'programing' 카테고리의 다른 글
Pandas에서 CSV 파일을 읽을 때 UnicodeDecodeError가 발생 (0) | 2023.05.11 |
---|---|
git config를 사용하여 글로벌 구성에서 항목을 제거하려면 어떻게 해야 합니까? (0) | 2023.05.11 |
SQL Server 복제 프로젝트에서 "잘못된 형식의 프로그램을 로드하려고 했습니다" 오류가 발생함 (0) | 2023.05.11 |
iOS 9에서 URL SCHEMPH로 Instagram 앱을 열지 않음 (0) | 2023.05.11 |
WPF 그리드에서 하위 컨트롤 사이의 간격 (0) | 2023.05.06 |