MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBの正確な要素配列のフィールドを更新しますか?


以下のステートメントを使用して、MongoDBの正確な要素配列を更新できます。構文は次のとおりです。

{"yourArrayDocumentName.$.yourNestedArrayDocument.yourPosition":"yourValue"}});

上記の構文を理解するために、いくつかのドキュメントを使用してコレクションを作成しましょう。ドキュメントを使用してコレクションを作成するためのクエリは次のとおりです。

> db.updateExactField.insertOne({"ActorId":1,"ActorDetails":[{"ActorName":"Johnny Depp","MovieList":
["The Tourist","Public Enemy"]},
... {"ActorName":"Chris Evans","MovieList":["Captain America","Avengers"]}]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6d7f63f2db199c1278e7f1")
}

これで、find()メソッドを使用してコレクションのドキュメントを表示できます。クエリは次のとおりです。

> db.updateExactField.find().pretty();

出力は次のとおりです。

{
   "_id" : ObjectId("5c6d7f63f2db199c1278e7f1"),
   "ActorId" : 1,
   "ActorDetails" : [
      {
         "ActorName" : "Johnny Depp",
         "MovieList" : [
            "The Tourist",
            "Public Enemy"
         ]
      },
      {
         "ActorName" : "Chris Evans",
         "MovieList" : [
            "Captain America",
            "Avengers"
         ]
      }
   ]
}

ケース1 :ここでは、正確な配列要素、つまり位置3で更新します。これは、配列が0から始まるため、インデックス2です。クエリは次のとおりです。

> db.updateExactField.update(
... {"ActorDetails.ActorName":"Chris Evans"},
... {$set:
... {"ActorDetails.$.MovieList.2":"Avengers:Infinity War"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

find()を使用して、コレクションのドキュメントを表示してみましょう。クエリは次のとおりです。

> db.updateExactField.find().pretty();

出力は次のとおりです。

{
   "_id" : ObjectId("5c6d7f63f2db199c1278e7f1"),
   "ActorId" : 1,
   "ActorDetails" : [
      {
         "ActorName" : "Johnny Depp",
         "MovieList" : [
            "The Tourist",
            "Public Enemy"
         ]
      },
      {
         "ActorName" : "Chris Evans",
         "MovieList" : [
            "Captain America",
            "Avengers",
            "Avengers:Infinity War"
         ]
      }
   ]
}

上記の出力、値「アベンジャーズ:インフィニットウォー」を見てください。 位置3、つまりインデックス2にあります。

ケース2 :インデックス1、つまり位置2で更新しましょう。クエリは次のとおりです。

> db.updateExactField.update( {"ActorDetails.ActorName":"Chris Evans"}, {$set:
{"ActorDetails.$.MovieList.1":"Gifted"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

find()メソッドを使用して、コレクションからドキュメントを確認してみましょう。クエリは次のとおりです。

> db.updateExactField.find().pretty();

出力は次のとおりです。

{
   "_id" : ObjectId("5c6d7f63f2db199c1278e7f1"),
   "ActorId" : 1,
   "ActorDetails" : [
      {
         "ActorName" : "Johnny Depp",
         "MovieList" : [
            "The Tourist",
            "Public Enemy"
         ]
      },
      {
         "ActorName" : "Chris Evans",
         "MovieList" : [
            "Captain America",
            "Gifted",
            "Avengers:Infinity War"
         ]
      }
   ]
}

上記のサンプル出力を見てください。値「Gifted」は位置2、つまりインデックス1にあります。


  1. MongoDBの配列内の要素を更新しますか?

    配列内の要素を更新するには、MongoDBで$setを使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo494.insertOne( ... { ... ...    "CollegeDetails" : [ ...       { ...          "CollegeName" : "MIT", ...          "Fee

  2. MongoDB配列の要素を削除するにはどうすればよいですか?

    要素を削除するには、MongoDBで$ pullを更新して、使用します。 $ pull演算子は、既存の配列から、指定された条件に一致する1つまたは複数の値のすべてのインスタンスを削除します。 まず、ドキュメントを使用してコレクションを作成しましょう- db.demo541.insertOne({"software":{"services":["gmail","facebook","yahoo"]}});{    "acknowledged" : true