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

MongoDB:WriteResult.getN()は常に0を返しますか?

    これは通常のMongoDBの動作であり、Javaドライバーとは何の関係もないという印象を受けました。

    ドキュメントで見つけることができるのは、これ> :

    挿入 updateでもない また、 remove n は指定されていないようで、0はデフォルト値と同じくらい適切です。 mongoシェルで簡単に確認できます:

    > db.test.insert({_id: 'test'})
    > db.getLastErrorObj()
    { "n" : 0, "connectionId" : 7, "err" : null, "ok" : 1 }
    

    私が間違っていない限り、それは実際には問題ではありません。どのような状況で挿入が失敗するかを自問してください(たとえば、接続の失敗を除く)。私が考えることができる唯一のものは、例外をもたらすユニシティ制約違反です。つまり、ほぼ定義上、 WriteResultを受け取るという事実 インスタンスは、操作が成功し、ドキュメントが挿入されたことを意味します。

    いくつかのメモ:

    • 私の前の議論はあなたのWriteConcernにかかっています エラーが報告されるほど十分に高い。 WriteConcern.NONEを使用している場合 たとえば、例外は発生しません。
    • 更新されたドキュメントの数が絶対に必要な場合は、いつでも saveを使用できます。 insertの代わりに 。あまりきれいではありませんが、期待どおりに動作します。


    1. Mongo Find()関数は_idを除外しません

    2. ネストされたデータをMongoDBからPandasデータフレームに取得する

    3. サーバーのMongoDBにJavaでリモート接続するにはどうすればよいですか?

    4. FOSUserBundleで重複ログインを防ぐ