次の 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 でインデックスによって配列要素を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。