私はMongoには新しく、文書のコレクションの中から配列からデータを取り除くためにクエリを作成する必要があるユースケースを実装しようとしています。ここでMongoDB:文書から配列要素を削除する
は私のドキュメントの1つである:
{
"id" : 2,
"owners" : ["aa", "bb"]
}
は今、私は所有者に基づいて、すべての文書のレコードを検索し、存在する場合、owners
配列からそれらを削除するには、クエリを構築する必要があります。
たとえば、クエリにaa
を送信した場合、その所有者が含まれているすべてのドキュメントから削除する必要があります。
私はどこかでこのロジックが見つかりました:
$db.coll.update({cond to identify document},{$pull:{'owners':{'aa':<>}}})
をしかし、どのように、これはデータを削除しない理解していません。前もって感謝します!
感謝をたどることができます学ぶためにのみ最初に一致した文書
を更新します。ここで何が起こっているのか正確に説明できますか? –
@ CodeKaro最新の回答をご覧ください。 – gypsyCoder
更新方法では、更新操作では、完全なコレクションスキャンを実行するのではなく、クエリで一致するドキュメントのみを更新し、コレクション内の各ドキュメントをチェックしてから大規模なデータセットでは速度が遅くなる「$ pull」があります。クエリを 'db.coll.update( {" owners ":" aa "}、 {" $ pull ":{" owners ":" aa "}}、 {"マルチ ":true} )' – chridam