MongoDB 컬렉션의 모든 문서에 새 필드 추가
기존 컬렉션의 모든 문서에 새 필드를 추가하려면 어떻게 해야 합니까?
기존 문서의 필드를 업데이트하는 방법은 알고 있지만 모음의 모든 문서에 새 필드를 추가하는 방법은 알고 있지 않습니다.이걸 어떻게 하면mongo
껍데기?
기존 컬렉션 필드 업데이트와 마찬가지로 지정된 필드가 없는 경우 새 필드를 추가합니다.
다음의 예를 참조해 주세요.
> db.foo.find()
> db.foo.insert({"test":"a"})
> db.foo.find()
{ "_id" : ObjectId("4e93037bbf6f1dd3a0a9541a"), "test" : "a" }
> item = db.foo.findOne()
{ "_id" : ObjectId("4e93037bbf6f1dd3a0a9541a"), "test" : "a" }
> db.foo.update({"_id" :ObjectId("4e93037bbf6f1dd3a0a9541a") },{$set : {"new_field":1}})
> db.foo.find()
{ "_id" : ObjectId("4e93037bbf6f1dd3a0a9541a"), "new_field" : 1, "test" : "a" }
편집:
모든 컬렉션에 new_field를 추가하려면 빈 선택기를 사용하고 다중 플래그를 true(마지막 매개 변수)로 설정하여 모든 문서를 업데이트해야 합니다.
db.your_collection.update(
{},
{ $set: {"new_field": 1} },
false,
true
)
편집:
위의 예에서는 마지막 2개의 필드false, true
를 지정합니다.upsert
그리고.multi
플래그를 설정합니다.
Upsert: true로 설정하면 쿼리 기준에 일치하는 문서가 없을 때 새 문서를 작성합니다.
다중: 참으로 설정하면 쿼리 기준을 충족하는 여러 문서를 업데이트합니다.false로 설정하면 하나의 문서를 업데이트합니다.
몽고 선물입니다.versions
에 앞서2.2
최신 버전에서는 쿼리가 약간 변경되었습니다.
db.your_collection.update({},
{$set : {"new_field":1}},
{upsert:false,
multi:true})
MongoDB 버전 3.2부터 update Many()를 사용할 수 있습니다.
> db.yourCollection.updateMany({}, {$set:{"someField": "someValue"}})
MongoDB 버전 4.0.x 의 구문은 다음과 같습니다.
db.collection.update({},{$set: {"new_field*":1}},false,true)
다음은 문서 모음에 게시된 필드를 추가하고 필드 값을 true로 설정하는 작업 예입니다.
db.articles.update({},{$set: {"published":true}},false,true)
db.collection.updateMany({}, {$set: {"fieldName": ""}})
updateMany
각 문서의 일치 조건이 필요합니다.{}
그것은 항상 진실이다.그리고 두 번째 인수는$set
연산자를 사용하여 각 문서에 필수 필드를 추가합니다.
피몽고 3.9+
update()
이제 더 이상 사용되지 않습니다.replace_one()
,update_one()
, 또는update_many()
대신.
제 경우, 사용했더니 문제가 해결되었습니다.
db.your_collection.update_many({}, {"$set": {"new_field": "value"}}, upsert=False, array_filters=None)
만약 당신이 mongoose를 사용하고 있다면, mongoose 연결 후에 이것을 시도해 보십시오.
async ()=> await Mongoose.model("collectionName").updateMany({}, {$set: {newField: value}})
위의 답변은 이 시나리오에 포함되지 않습니다.비슷한 쿼리를 찾고 있었지만 추가하기를 원합니다.fields
조건에 따라 적은 수의 문서만 사용할 수 있습니다.
그래서 우리는 다음의 첫 번째 변수를 사용할 수 있다.updateMany
몇 개의 문서에서만 필드를 업데이트합니다.
예:null 필드를 추가하고 싶다.isDeprecated?
userType이 고용주이고 국가 "AAA"를 가진 모든 사용자에게 적용됩니다.
db.users.updateMany({"userType": "Employer", "country": "AAA"}, {"$set": { "isDeprecated?": true }})
이 답변은 수집을 찾아 업데이트해야 하는 시나리오에서도 도움이 됩니다.이 작업은 앞서 말한 것처럼 단일 쿼리에서 수행할 수 있습니다.
언급URL : https://stackoverflow.com/questions/7714216/add-new-field-to-every-document-in-a-mongodb-collection
'source' 카테고리의 다른 글
유휴 사용자에 따라 Angularjs를 사용한 자동 로그아웃 (0) | 2023.03.11 |
---|---|
Localhost에서 사이트 URL 및 WordPress URL 변경 (0) | 2023.03.11 |
대체, 아이콘 및 매니페스트 링크를 wp_head에 큐잉하려면 어떻게 해야 합니까? (0) | 2023.03.11 |
각진 상태JS 부트스트랩UI 자동 검색, $viewValue란? (0) | 2023.03.11 |
Angular ui-router의 $state.transitionTo()와 $state.go()의 차이 (0) | 2023.03.11 |