1

Mongo dbでスキーマの変更をどのように処理しますか。たとえば、リファクタリング後にオブジェクトスキーマの設計を変更すると、ドキュメントスキーマに影響します。ドキュメントスキーマを更新する方法はありますか?

4

1 に答える 1

3

スキーマ全体に対して更新を実行したり、フィールドを削除したり、フィールドを追加して計算値に設定したりすることができます。

xフィールドがあり、x / 2に設定する必要があるayフィールドを追加したい場合は、次のようにすることができます。

PRIMARY> db.test.insert({x:15});
PRIMARY> db.test.insert({x:30});
PRIMARY> db.test.insert({x:50}); 
PRIMARY> db.test.find();
{ "_id" : ObjectId("4f9df1ebed2b924eedb8cad9"), "x" : 15 }
{ "_id" : ObjectId("4f9df1eeed2b924eedb8cada"), "x" : 30 }
{ "_id" : ObjectId("4f9df1f1ed2b924eedb8cadb"), "x" : 50 }
PRIMARY> db.test.find().forEach(function(doc) { 
            doc.y = doc.x/2; 
            db.test.save(doc); 
         });
PRIMARY> db.test.find();
{ "_id" : ObjectId("4f9df1ebed2b924eedb8cad9"), "x" : 15, "y" : 7.5 }
{ "_id" : ObjectId("4f9df1eeed2b924eedb8cada"), "x" : 30, "y" : 15 }
{ "_id" : ObjectId("4f9df1f1ed2b924eedb8cadb"), "x" : 50, "y" : 25 }
于 2012-04-30T02:01:50.463 に答える