[MONGODB] 어떻게 MongoDB의 모든 문서에 대한 필드 이름을 바꿀 수 있습니다?
MONGODB어떻게 MongoDB의 모든 문서에 대한 필드 이름을 바꿀 수 있습니다?
나는 5000 개 기록, 유사 각각 포함 뭔가 MongoDB를의 컬렉션이 가정 :
{
"occupation":"Doctor",
"name": {
"first":"Jimmy",
"additional":"Smith"
}
모든 문서의 필드 "마지막"을 "추가"를 이름을 변경하는 쉬운 방법이 있나요? 나는 문서의 $ 이름 변경 연산자를 보았다하지만 서브 필드를 지정하는 방법에 대한 정말 명확하지 않다.
해결법
-
==============================
1.당신이 사용할 수있는:
당신이 사용할 수있는:
db.foo.update({}, {$rename:{"name.additional":"name.last"}}, false, true);
또는 그냥 속성을 포함하는 문서를 업데이트 :
db.foo.update({"name.additional": {$exists: true}}, {$rename:{"name.additional":"name.last"}}, false, true);
위의 방법에서 진정한 거짓은 다음과 같습니다 {upsert : 멀티, 거짓 : TRUE}. 모든 레코드를 업데이트 할 사실 : 당신은 다중이 필요합니다.
아니면 이전의 방법을 사용할 수 있습니다 :
remap = function (x) { if (x.additional){ db.foo.update({_id:x._id}, {$set:{"name.last":x.name.additional}, $unset:{"name.additional":1}}); } } db.foo.find().forEach(remap);
MongoDB를 3.2에서 당신은 또한 사용할 수 있습니다
db.students.updateMany( {}, { $rename: { "oldname": "newname" } } )
이러한 일반적인 구문은
db.collection.updateMany(filter, update, options)
https://docs.mongodb.com/manual/reference/method/db.collection.updateMany/
-
==============================
2.시도하십시오 db.collectionName.update ({}, {$ 이름 바꾸기 : { 'name.additional': 'name.last'}}, {멀티 : TRUE})
시도하십시오 db.collectionName.update ({}, {$ 이름 바꾸기 : { 'name.additional': 'name.last'}}, {멀티 : TRUE})
이 읽기 : http://docs.mongodb.org/manual/reference/operator/rename/#_S_rename
-
==============================
3.당신이 mongoid과 같은 일을 할 필요가 어느 경우 :
당신이 mongoid과 같은 일을 할 필요가 어느 경우 :
Model.all.rename(:old_field, :new_field)
최신 정보
monogoid 4.0.0에서 구문의 변화가있다 :
Model.all.rename(old_field: :new_field)
-
==============================
4.누구나 잠재적으로 (어떤 _id를 사용하지 않음으로써) 컬렉션에서 필드의 이름을 바꾸려면이 명령을 사용할 수 있습니다 :
누구나 잠재적으로 (어떤 _id를 사용하지 않음으로써) 컬렉션에서 필드의 이름을 바꾸려면이 명령을 사용할 수 있습니다 :
dbName.collectionName.update({}, {$rename:{"oldFieldName":"newFieldName"}}, false, true);
참고 참조
-
==============================
5.@Felix 얀은 이전의 방법은 내가 다른 snipets 몇 가지 문제가이 도움이 되었으면 좋겠했다, 잘 작동하는 것 같다 언급 한 바와 같이이 nodejs 코드는 그냥 그렇게.
@Felix 얀은 이전의 방법은 내가 다른 snipets 몇 가지 문제가이 도움이 되었으면 좋겠했다, 잘 작동하는 것 같다 언급 한 바와 같이이 nodejs 코드는 그냥 그렇게.
이 이름을 변경합니다 열 "oldColumnName는"테이블 "문서"의 "newColumnName"수하는
var MongoClient = require('mongodb').MongoClient , assert = require('assert'); // Connection URL //var url = 'mongodb://localhost:27017/myproject'; var url = 'mongodb://myuser:mypwd@myserver.cloud.com:portNumber/databasename'; // Use connect method to connect to the server MongoClient.connect(url, function(err, db) { assert.equal(null, err); console.log("Connected successfully to server"); renameDBColumn(db, function() { db.close(); }); }); // // This function should be used for renaming a field for all documents // var renameDBColumn = function(db, callback) { // Get the documents collection console.log("renaming database column of table documents"); //use the former way: remap = function (x) { if (x.oldColumnName){ db.collection('documents').update({_id:x._id}, {$set:{"newColumnName":x.oldColumnName}, $unset:{"oldColumnName":1}}); } } db.collection('documents').find().forEach(remap); console.log("db table documents remap successfully!"); }
-
==============================
6.나는, 몽고 3.4.0을 사용하고 있습니다
나는, 몽고 3.4.0을 사용하고 있습니다
은 $ 이름 바꾸기 연산자는 필드의 이름을 업데이트하고 다음과 같은 형태를 가진다 :
{$rename: { <field1>: <newName1>, <field2>: <newName2>, ... } }
에 대한 예 :
db.getCollection('user').update( { _id: 1 }, { $rename: { 'fname': 'FirstName', 'lname': 'LastName' } } )
새로운 필드 이름은 기존의 필드 이름과 달라야합니다. 포함 된 문서에 지정하려면 점 표기법을 사용합니다.
이 작업은 컬렉션에있는 모든 문서에 대한 이름을 필드 이름을 이름을 변경합니다 :
db.getCollection('user').updateMany( {}, { $rename: { "add": "Address" } } ) db.getCollection('user').update({}, {$rename:{"name.first":"name.FirstName"}}, false, true);
거짓 위의 방법에서, 사실은 다음과 같습니다 {upsert : 멀티, 거짓 : TRUE} 모든 레코드를 업데이트 .TO, 당신은 멀티 필요합니다 사실.
임베디드 문서에 필드 이름 바꾸기
db.getCollection('user').update( { _id: 1 }, { $rename: { "name.first": "name.fname" } } )
사용 링크 : https://docs.mongodb.com/manual/reference/operator/update/rename/
-
==============================
7.당신이 MongoMapper을 사용하는 경우이 작동합니다 :
당신이 MongoMapper을 사용하는 경우이 작동합니다 :
Access.collection.update( {}, { '$rename' => { 'location' => 'location_info' } }, :multi => true )
from https://stackoverflow.com/questions/9254351/how-can-i-rename-a-field-for-all-documents-in-mongodb by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] MongoDB를 / 몽구스 :없는 경우는 null 독특한 (0) | 2019.12.02 |
---|---|
[MONGODB] 몽구스의 배열 스키마로 개체를 추진 (0) | 2019.12.02 |
[MONGODB] 어떻게 쉘 스크립트를 통해 몽고 명령을 실행합니다? (0) | 2019.12.02 |
[MONGODB] MongoDB의 컬렉션 모든 문서에 새 필드를 추가 (0) | 2019.12.02 |
[MONGODB] 어떻게 몽구스의 문서 upsert / 업데이트하려면 어떻게해야합니까? (0) | 2019.12.02 |