私は昨日mongodbで働き始めました。同じデータベースに1億と3億のドキュメントを持つ2つのコレクションがあります。ドキュメント内の値が2番目のコレクションのどのドキュメントにも見つからない場合、1つのコレクション内のドキュメントを削除したいと思います。これをより明確にするために、以下にpython / mongodb擬似コードコードを提供しました。これは適切な構文ではなく、私が求めているロジックを示すためだけのものであることに気付きました。私のラップトップにはたくさんのレコードとそのレコードがあるので、私は最も効率的な方法を探しています:)
for doc_ONE in db.collection_ONE:
if doc_ONE["arbitrary"] not in [doc_TWO["arbitrary"] for doc_TWO in db.collection_TWO]:
db.collection_ONE.remove({"arbitrary": doc_ONE["arbitrary"]})
もっと速い場合は、mongocliからこれを実行しても問題ありません。これを読んでくれてありがとう、そして私を激しく怒らせないでください笑。
場合document["arbitrary"]
immuable値であり、あなたは内のすべての値(重複なし)を保存することができますset
:
値= {db.collection_TWO内のドキュメントのdocument ["arbitrary"]}
あなたが提案するようなプロセス:
for doc_one in db.collection_ONE:
if doc_one["arbitrary"] not in values:
db.collection_ONE.remove({"arbitrary": doc_one["arbitrary"]})
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加