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

MongoDBにファイルをインポートするときに既存のドキュメントを置き換える方法

    mongoimportを使用する場合 ファイルをMongoDBにインポートするには、インポートするドキュメントと一致する既存のドキュメントを置き換えるオプションがあります。

    つまり、インポートされたドキュメントが同じ_idを持っている場合 インポート先のコレクション内の既存のドキュメントとしての価値がある場合、既存のドキュメントはインポートされているドキュメントに置き換えられます。

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

    mongoimportを使用するときに既存のドキュメントを置き換える方法 upsertを使用することです モード。

    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 }

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

    {"_id":2,"name":"Fetch","type":"Dog"}
    {"_id":3,"name":"Scratch","type":"Cat","weight":10}
    {"_id":4,"name":"Hop","type":"Kangaroo","weight":60}

    次のコマンドは、JSONファイルをコレクションにインポートします。

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

    これはupsertを使用します 一致するドキュメントをインポートされたドキュメントに置き換えるモード。

    結果を確認する

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

    db.pets.find()

    結果:

    { "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
    { "_id" : 2, "name" : "Fetch", "type" : "Dog" }
    { "_id" : 3, "name" : "Scratch", "type" : "Cat", "weight" : 10 }
    { "_id" : 4, "name" : "Hop", "type" : "Kangaroo", "weight" : 60 }

    ドキュメント2が完全に置き換えられたことがわかります。犬のBark 犬のFetchに置き換えられました 、およびFetchの重みは記録されません 。

    ドキュメント3も置き換えられ、ドキュメント4はまったく新しいドキュメントになりました。

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

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

    pets2.jsonという別のJSONファイルがあるとします。 インポートしたいのですが、次のようになります:

    {"name":"Fetch","type":"Dog","weight":20,"gooddog":true}
    {"name":"Scratch","type":"Cat","weight":15}
    {"name":"Bubbles","type":"Fish"}

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

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

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

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

    db.pets.find()

    結果:

    { "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
    { "_id" : 2, "name" : "Fetch", "type" : "Dog", "weight" : 20, "gooddog" : true }
    { "_id" : 3, "name" : "Scratch", "type" : "Cat", "weight" : 15 }
    { "_id" : 4, "name" : "Hop", "type" : "Kangaroo", "weight" : 60 }
    { "_id" : ObjectId("5ff00800d99141016941217c"), "name" : "Bubbles", "type" : "Fish" }

    Fetchが更新/置換されたことがわかります(ただし、_id 値は同じままです)。 Scratchでも同じです。

    一方、バブルはアップサートフィールドに一致しなかったため、挿入されました。

    mongoimportを確認します

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

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

    mongoimport --version

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

    コマンドを実行する場所

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

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


    1. Microsoft.Extensions.Caching.Redisはdb0とは異なるデータベースを選択します

    2. 埋め込まれたドキュメントの「upsert」

    3. Docker Composeを使用してRedisコンテナに接続するにはどうすればよいですか?

    4. データベースとしてのRedis