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

MongoDBとupsertの問題

    まず、アップサートを行っているようには見えません。 Java APIでのその構文では、db.updateの3番目の引数がtrueに設定されます。

       db.update(com.mongodb.DBObject, com.mongodb.DBObject, boolean /*upsert */, boolean /* multi */)
    

    $pushも実行しないでください。mongoシェルで実行したいことのセマンティクスは次のようになります。

    db.collection.update( {"resourceVacation":resourceID}, {$set:{"vacationList":[...]}, true)
    

    つまり、resourceIDを持つresourceVacationが存在する場合は、その「vacationList」を私が提供するものにします。存在しない場合は、このレコードを挿入してください。

    Java APIを直接使用している場合は、上記と同等のもので十分です。

    SpringのMongoTemplateを使用しているようです。 upsertsを許可するために使用されなかったため、使用しているバージョンを確認する必要があります。 。ただし、その問題は解決済みとしてマークされています。古いバージョンで立ち往生している場合は、ここ

    最新の場合は、ここ



    1. マングースの友達スキーマのモデリング?

    2. ClusterControlを使用したデータの保護

    3. MongoDB LinQ Selectメソッドは、実際にはフィールドのサブセットのみを取得しますか?

    4. 関連するキーをOIDまたは文字列としてMongoDBに保存します