[MONGODB] MongoDB를 어떻게 하나의 명령으로 여러 문서를 업데이트?
MONGODBMongoDB를 어떻게 하나의 명령으로 여러 문서를 업데이트?
나는 다음 예제 코드는 하나의 문서를 갱신 것을 찾을 수 놀랐습니다 :
> db.test.save({"_id":1, "foo":"bar"});
> db.test.save({"_id":2, "foo":"bar"});
> db.test.update({"foo":"bar"}, {"$set":{"test":"success!"}});
> db.test.find({"test":"success!"}).count();
1
나는 루프를 통해 할 수 있으며 모든 변경 전까지 업데이트를 유지 알고,하지만 그건 정말 비효율적 인 것 같다. 더 좋은 방법이 있나요?
해결법
-
==============================
1.멀티 업데이트는 그래서 개발 버전 (1.1.3)에서만 가능하며, 최근에 추가되었다. 쉘에서 당신은 세 번째 인수가 upsert 인수입니다 업데이트 할 수있는 네 번째 인수 ()로 true를 건네 멀티 업데이 트를 수행합니다
멀티 업데이트는 그래서 개발 버전 (1.1.3)에서만 가능하며, 최근에 추가되었다. 쉘에서 당신은 세 번째 인수가 upsert 인수입니다 업데이트 할 수있는 네 번째 인수 ()로 true를 건네 멀티 업데이 트를 수행합니다
db.test.update({foo: "bar"}, {$set: {test: "success!"}}, false, true);
MongoDB를의 버전 2.2 한 번에 여러 문서를 업데이트 할 멀티 true로 설정 옵션에 필요합니다.
db.test.update({foo: "bar"}, {$set: {test: "success!"}}, {multi: true})
MongoDB를의 버전 3.2 이상 당신은 또한 별도의 멀티 옵션 필요없이 한 번에 여러 문서를 업데이트하는 새로운 방법 updateMany ()를 사용할 수 있습니다.
db.test.updateMany({foo: "bar"}, {$set: {test: "success!"}})
-
==============================
2.당신은 updateMany을 사용할 수 있습니다 V3.3부터
당신은 updateMany을 사용할 수 있습니다 V3.3부터
db.collection.updateMany( <filter>, <update>, { upsert: <boolean>, writeConcern: <document>, collation: <document>, arrayFilters: [ <filterdocument1>, ... ] } )
버전 2.2에서 업데이트 기능은 다음의 형식을 취합니다 :
db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean> } )
https://docs.mongodb.com/manual/reference/method/db.collection.update/
-
==============================
3.몽고 버전> 2.2를 들어, 필드 멀티를 추가하고 true로 설정
몽고 버전> 2.2를 들어, 필드 멀티를 추가하고 true로 설정
db.Collection.update({query}, {$set: {field1: "f1", field2: "f2"}}, {multi: true })
-
==============================
4.나는 더 나은 인터페이스를 사용하여이 작업을 수행 할 수있는 방법을 만들었습니다.
나는 더 나은 인터페이스를 사용하여이 작업을 수행 할 수있는 방법을 만들었습니다.
또한 사전에 그들을 체인에 의해 정렬 업데이트 및 제거합니다에, 건너 뛰기, 제한을 적용 할 수 있습니다.
당신이 관심이 있다면, 몽고 - 해커 체크 아웃
-
==============================
5.MongoDB를 클라이언트에서 입력 :
MongoDB를 클라이언트에서 입력 :
db.Collection.updateMany({}, $set: {field1: 'field1', field2: 'field2'})
3.2 버전의 새로운 기능
PARAMS ::
{}: select all records updated
키워드 인수 다중 촬영하지
-
==============================
6.MongoDB를 사용하면 무시 얻을 것이다 기준과 일치 이상의 문서가있는 경우에도, 문서를 업데이 트하는 일이 첫 번째 일치 중 업데이트 명령을 발행 할 때 쿼리 기준과 일치 하나의 일치하는 문서를 찾을 수 있습니다.
MongoDB를 사용하면 무시 얻을 것이다 기준과 일치 이상의 문서가있는 경우에도, 문서를 업데이 트하는 일이 첫 번째 일치 중 업데이트 명령을 발행 할 때 쿼리 기준과 일치 하나의 일치하는 문서를 찾을 수 있습니다.
그래서 이것은 우리가 쿼리 기준과 일치하는 모든 documnets 업데이 트를 의미하여 업데이트 문에 "MULTI"옵션을 지정할 수 있습니다 극복합니다. 컬렉션 기준 및 업데이트 일치하는 사람을 찾는 모든 documnets를 검색 :
db.test.update({"foo":"bar"},{"$set":{"test":"success!"}}, {multi:true} )
-
==============================
7.저도 같은 문제가 있었는데, 나는 해결책을 발견하고 그것이 마치 마법처럼 작동합니다
저도 같은 문제가 있었는데, 나는 해결책을 발견하고 그것이 마치 마법처럼 작동합니다
다만이 같은 사실에 플래그 멀티를 설정합니다 :
db.Collection.update( {_id_receiver: id_receiver}, {$set: {is_showed: true}}, {multi: true} /* --> multiple update */ , function (err, updated) {...});
난이 도움이 되었으면 좋겠 :)
-
==============================
8.당신은 use.` 수 있습니다
당신은 use.` 수 있습니다
Model.update({ 'type': "newuser" }, { $set: { email: "abc@gmail.com", phoneNumber:"0123456789" } }, { multi: true }, function(err, result) { console.log(result); console.log(err); }) `
-
==============================
9.MongoDB의의 updateMany의 모든 최신 버전은 () 잘 작동됩니다
MongoDB의의 updateMany의 모든 최신 버전은 () 잘 작동됩니다
db.getCollection('workers').updateMany({},{$set: {"assignedVehicleId" : "45680"}});
-
==============================
10., 덕분에이 공유를위한, 나는 2.6.7 사용 및 다음 쿼리는 단지 일
, 덕분에이 공유를위한, 나는 2.6.7 사용 및 다음 쿼리는 단지 일
모든 문서에 대한 :
db.screen.update({stat:"PRO"} , {$set : {stat:"pro"}}, {multi:true})
하나의 문서에 대한 :
db.screen.update({stat:"PRO"} , {$set : {stat:"pro"}}, {multi:false})
from https://stackoverflow.com/questions/1740023/mongodb-how-to-update-multiple-documents-with-a-single-command by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 어떻게 필드의 유형을 변경하려면? (0) | 2019.11.30 |
---|---|
[MONGODB] MongoDB의에서 페이지 매김을 구현 (0) | 2019.11.30 |
[MONGODB] ID를 일치하지 않습니다 총 $ 일치 몽구스 (0) | 2019.11.30 |
[MONGODB] 어떻게 MongoDB의 문서에서 기준과 일치하는 배열 요소를 업데이트하는 방법은 무엇입니까? (0) | 2019.11.30 |
[MONGODB] 정지 몽구스 하위 문서 배열 항목에 대한 _id 속성을 생성에서 (0) | 2019.11.30 |