MongoDB –ドキュメントからフィールドを削除する方法
このMongoDBの記事では、ドキュメントと配列からフィールドを削除する方法を示します。
1. ドキュメントからフィールドを削除する
文書のサンプルで、フィールド「affLink」を削除します。
domain.json
{ "_id" : 1, "domain" : "example.com", "affLink" : "abc" }
すべてのドキュメントからフィールドを削除するには、{multi: true}
を設定します。そうしないと、最初に一致したドキュメントのフィールドのみが削除されます。
db.domain.update({},{$unset: {affLink:1}},{multi: true});
出力
domain.json
{ "_id" : 1, "domain" : "example.com" }
2. 配列からフィールドを削除する
MongoDB 2.6より前のバージョンでは、配列からフィールドを削除する公式の関数はまだありません。 それを修正するには、スクリプトを書く必要があります:
person.json
{ _id: 1, name: "example", addresses: [ { street: "99 The Rock Street", city: "Boston", state: "MA", zip: "66666" }, { street: "88 WWF Street", city: "Boston", state: "MA", zip: "77777" } ] }
ドキュメントをループし、配列からフィールド「state」を1つずつ削除します。
db.person.find({}).forEach(function(doc) { var address = doc.addresses; for(var i = 0; i < address.length; ++i) { var x = address[i]; delete (x["state"]); } db.person.save(doc); });
出力
person.json
{ _id: 1, name: "example", addresses: [ { street: "99 The Rock Street", city: "Boston", zip: "66666" }, { street: "88 WWF Street", city: "Boston", zip: "77777" } ] }