MongoDBのインデックスで配列要素を削除するにはどうすればよいですか?
次の2つの手順を使用して、インデックスによって配列要素を削除できます-
最初のステップは次のとおりです-
db.yourCollectionName.update({}, {$unset : {"yourArrayFieldName.yourIndexValue" : 1 }});
上記の構文では、「yourIndexValue」の場所にnull値が配置されます。その後、配列要素から削除するには、配列ファイルからnull値をプルする必要があります。
2番目のステップは次のとおりです-
db.yourCollectionName.update({}, {$pull : {"yourArrayFieldName" : null}});
構文を実装するために、ドキュメントを使用してコレクションを作成しましょう。ドキュメントを使用してコレクションを作成するためのクエリは次のとおりです-
> db.removeArrayElementByItsIndexDemo.insertOne({"InstructorName":"David", "InstructorAge":28,"InstructorSubject":["MongoDB","MySQL","Java","SQL Server","PL/SQL"]}); { "acknowledged" : true, "insertedId" : ObjectId("5c8abbfc6cea1f28b7aa0803") }
find()メソッドを使用して、コレクションのすべてのドキュメントを表示します。クエリは次のとおりです-
> db.removeArrayElementByItsIndexDemo.find().pretty();
以下は出力です-
{ "_id" : ObjectId("5c8abbfc6cea1f28b7aa0803"), "InstructorName" : "David", "InstructorAge" : 28, "InstructorSubject" : [ "MongoDB", "MySQL", "Java", "SQL Server", "PL/SQL" ] }
配列要素をそのインデックスで削除するためのクエリは次のとおりです。
ステップ1- クエリは次のとおりです-
> db.removeArrayElementByItsIndexDemo.update({}, {$unset : {"InstructorSubject.2" : 1 }}); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
ステップ2 −クエリは次のとおりです-
> db.removeArrayElementByItsIndexDemo.update({}, {$pull : {"InstructorSubject" : null}}); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
配列要素「Java」が削除されているかどうかを確認しましょう。クエリは次のとおりです-
> db.removeArrayElementByItsIndexDemo.find().pretty();
以下は出力です-
{ "_id" : ObjectId("5c8abbfc6cea1f28b7aa0803"), "InstructorName" : "David", "InstructorAge" : 28, "InstructorSubject" : [ "MongoDB", "MySQL", "SQL Server", "PL/SQL" ] }
サンプル出力を見てください。配列要素「Java」は完全に削除されています。
-
配列内のマルチキーインデックスを使用してMongoDBクエリを改善するにはどうすればよいですか?
これには、ネストされたオブジェクトのクエリに使用される$elemMatchを使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo444.insertOne( ... { ... "Information": [{ ... id:1, ... Name:"Chris" ...
-
MongoDB配列の要素を削除するにはどうすればよいですか?
要素を削除するには、MongoDBで$ pullを更新して、使用します。 $ pull演算子は、既存の配列から、指定された条件に一致する1つまたは複数の値のすべてのインスタンスを削除します。 まず、ドキュメントを使用してコレクションを作成しましょう- db.demo541.insertOne({"software":{"services":["gmail","facebook","yahoo"]}});{ "acknowledged" : true