MongoDB - ドキュメントからフィールドを削除する方法

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"
    }
   ]
}