MongoDB でインデックスによって配列要素を削除するにはどうすればよいですか?

PHPz
リリース: 2023-09-08 12:17:02
転載
946 人が閲覧しました

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

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート