본문 바로가기
IT/파이썬

Mongodb 한번에 여러 documents 필드값 바꾸기

몽고DB...sql query도 아니고...이것도 어렵네..에효

 

무튼 정답은 아래를 참고

 

일단 원하는 collection 에 원하는 document를 찾아 $set 이라는 키워드로 특정 필드값을 업데이트 하는 예제

 

아래는 전체를 찾아 workline 이라는 필드를 object id xxxxx 를 갖는 reference field 혹은 embedded document 값으로 변경하는 실제 명령 예제

> db.order_item.update({}, { $set: {"workline":ObjectId("602b5cc41c50452150fc5ad0")}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.order_item.update({}, { $set: {"workline":ObjectId("602b5cc41c50452150fc5ad0")}}, {multi:true})
WriteResult({ "nMatched" : 22, "nUpserted" : 0, "nModified" : 20 })

 

그런데 첨 수행하니 꼴랑 1개 바뀌었다고 해서, 더 찾아봐서....

업데이트를 여러개 하려면 꼭 뒤에 {multi:true} 옵션을 넣어줘야 하네 귀찮네..이거 안주니깐 그냥 1개만 업데이트 합니다.

 

무튼 성공

이를 위해선 아래 과정을 거쳐야

 

일단 mongo 명령어로 mongodb에 접속하고

 

> show databases

 

해서 DB 리스트를 보고 일단 아래 use 명령어로 일단 해당 컬렉션으로 진입해야 한다는 것은 잊지 말고

> use 원하는컬렉션

 

컬렉션 명이 궁금하면 아래 command

> show collections

 

인증을 하도록 되어 있다면, 반드시 아래 명령어로 admin 모드로 진입하시길

> use admin

> db.auth("admin", "패스워드" )

 

아래는 참조글 입니다.

 

stackoverflow.com/questions/15649613/db-collection-update-all-documents/15649813

 

db.collection.update( ) all documents

I try rename one field in all documents of a collection, with db.coll.update({},{ $rename: {'originField':'newField'} }); but only one document is changed, why ?

stackoverflow.com

velog.io/@magnoliarfsit/Mongo.db-db-%EC%A0%91%EC%86%8D-%EB%B0%8F-%EB%AA%85%EB%A0%B9%EC%96%B4-find-%EB%A9%94%EC%86%8C%EB%93%9C

 

[Mongo.db] db 접속 및 명령어, find() 메소드

mongodb 의 특정 아이피에 접속하기 db 접속 후 명령어들 find() 메소드 사용하기 query : document 타입. Optional(선택적). Document를 조회할 때 기준을 정한다. 기준이 없이 컬렉션에 있는 모든 Document를 조

velog.io

BJ.

배우자 learn 글자

Miguel Á. Padriñán 님의 사진, 출처: Pexels