2017-01-04 3 views
-1

MongoDB의 문서에서 필드 이름 (값이 아닌 필드 이름 만)을 변경하고 싶습니다.MongoDB 필드/키 이름 바꾸기

{_id : ObjectId(xxxxxxxxxxxx), 
user : "Soham", 
age : 29 
} 

가 지금은 '이름'에서 '사용자'라는 이름의 필드를 변경하고 싶지만,의 값이 아니라 : 문서 (아래)이 모양과 사용자의 컬렉션에 하나 개의 문서 만 가지고 = Soham 필드. 그래서 mongo 쉘에서 아래 명령을 작성했습니다 :

var soh = db.user.find({"user":"Soham"}); 
soh.name = soh.user; 
delete soh.user; 
db.user.update({"user":"Roshan"},soh); 

업데이트 명령을 실행할 때 오류가 발생합니다. 내가 MongoDB를 처음 접했을 때 내가 어디로 잘못 가고 있는지 알지 못한다. 모든 종류의 도움을 주시면 감사하겠습니다.

답변

0

를 업데이트 할 수 있습니다.

db.user.updateMany({}, { $rename: { "user": "name" } }) 
+0

Mongoshell에서 ObjectId를 복사하려면 어떻게해야합니까? 나는 그것을 선택하려하지만, 할 수 없다 .. 어떤 생각? – Soham

+0

이 같은 것을 시도 할 수 있습니다. 'var cursor = db.user.find(); while (cursor.hasNext()) { var doc = cursor.next(); print ("_id :"+ doc._id); }'. 자세한 내용은 https://docs.mongodb.com/manual/tutorial/iterate-a-cursor/ – Veeram

+0

감사합니다. – Soham

1

$rename 연산자를 사용하십시오.

그래서, 몽고 쉘에서, 하나의 문서를 업데이트 :

db.user.update({ _id: ObjectId(xxxxxxxxxxxx) }, { $rename: { 'user': 'name'} }) 

운영자 $rename이 있습니다 모든 문서

db.user.updateMany({}, {$rename: { "user": "name" } }) 
+0

ObjectId를 Mongoshell (복사하는 대신)에서 어떻게 복사 할 수 있습니까? 나는 그것을 선택하려하지만, 할 수 없다 .. 어떤 생각? – Soham

+0

도움이된다면 답으로 표시해주세요 – Alex

+0

... 고마워요! – Soham