sql >> データベース >  >> NoSQL >> MongoDB

ファイルをインポートしてMongoDBドキュメントを削除する方法

    mongoimport現在 バージョン100.0.0では、インポートされたファイルに基づいてMongoDB内のドキュメントを削除できます。これを行うには、deleteを使用します モード。

    deleteを使用する場合 モード、インポートされたドキュメントが同じ_idを持っている場合 インポート先のコレクション内の既存の値として、既存のドキュメントが削除されます。

    別の1つまたは複数のフィールド(_id以外)を指定することもできます フィールド)必要に応じて一致するフィールドになります。

    petsというコレクションがあるとします。 次のドキュメントが含まれています:

    db.pets.find()

    結果:

    { "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
    { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
    { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
    { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 }
    { "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 }

    そして、pets.jsonというJSONファイルがあります。 :

    {"_id":1,"name":"Wag","type":"Dog"}
    {"_id":2,"name":"Fluffy","type":"Cat","weight":10}
    {"_id":9,"name":"Hop","type":"Kangaroo","weight":60}

    次のコマンドは、deleteを使用してJSONファイルをインポートします モード:

    mongoimport --db=PetHotel --collection=pets --mode=delete --file=data/pets.json

    このコマンドを実行すると、コレクション内の一致するドキュメントがすべて削除されます。

    結果を確認する

    コレクションを見てみましょう。

    db.pets.find()

    結果:

    { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
    { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 }
    { "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 }

    最初の2つのドキュメントが削除されていることがわかります。 _idが原因で削除されました 値が_idと一致しました 既存のドキュメントの値。これは、他の詳細が必ずしも一致するとは限らないにもかかわらずです(ドキュメント2など)。

    また、インポートしたファイルには_idのドキュメントが含まれていました 9のですが、一致するドキュメントがなかったため、そのドキュメントは削除されませんでした。

    アップサートフィールドの変更/秒

    --upsertFieldsを使用できます _id以外のフィールドを指定するパラメータ 対戦相手。このパラメータで複数のフィールドを使用する場合は、コンマ区切りのリストとして渡します。

    pets2.jsonという別のJSONファイルがあるとします。 次のようになります:

    { "name" : "Meow", "type" : "Cat", "weight" : 7 }
    { "name" : "Bubbles", "type" : "Fish", "weight" : 3 }

    このドキュメントには_idは含まれていません したがって、各ドキュメントを一意に識別する他のフィールドと照合する必要があります。この場合、nameを使用できます およびtype 田畑。

    したがって、次のmongoimportを使用できます。 コマンド:

    mongoimport --db=PetHotel --collection=pets --mode=delete --upsertFields=name,type --file=data/pets2.json

    それでは、コレクションをもう一度確認しましょう:

    db.pets.find()

    結果:

    { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 }
    { "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 }

    そのペットがMongoDBコレクションとインポートされたドキュメントの両方に存在したため、猫のニャーが削除されました。

    魚の泡には一致するドキュメントがなかったため、そのドキュメントには何も削除されませんでした。

    mongoimportを確認します

    mongoimport MongoDBデータベースツールパッケージの一部です。 MongoDBデータベースツールは、MongoDBを操作するためのコマンドラインユーティリティのスイートです。

    MongoDBデータベースツール/mongoimportを使用しているかどうかわからない場合 インストールされている場合は、ターミナルまたはコマンドプロンプトで次のコマンドを実行して確認してください。

    mongoimport --version

    持っている場合は、バージョン情報などが表示されます。持っていない場合は、MongoDB Webサイトにあるインストール手順を使用して、システムにインストールできます。

    コマンドを実行する場所

    mongoimportを実行する必要があることを忘れないでください システムのコマンドラインからのコマンド(新しいターミナルやコマンドプロンプトウィンドウなど)。

    mongoから実行しないでください シェル。


    1. スプリングまたはスプリングブートでRedisを使用する場合のデフォルトのキャッシュ戦略は何ですか?

    2. Python-Redisサーバーが利用可能かどうかを確認する方法

    3. Redis接続ECONNREFUSED127.0.0.1:6379

    4. MongoDB $ substrCP