1

Ruby で mongoid gem を使用しています。コレクション内の同じ一意のドキュメントをアップサート、保存、または挿入するたびに、Ruby インスタンスは異なる ID を表示します。たとえば、次のようなスクリプトがあります。

class User
  include Mongoid::Document
  field :email, type: String
  field :name, type: String
  index({ email: 1}, { unique: true })
  create_indexes
end

u=User.new(email: 'test@testers.edu', name: "Mr. Testy")
u.upsert
puts u.to_json

空または存在しないコレクションに対して初めて実行すると、この出力が得られます

{"_id":"52097dee5feea8384a000001","email":"test@testers.edu","name":"Mr. Testy"}

もう一度実行すると、次のようになります。

{"_id":"52097e805feea8575a000001","email":"test@testers.edu","name":"Mr. Testy"}

しかし、MongoDB のドキュメントにはまだ最初の ID (52097dee5feea8384a000001) が表示されているので、同じレコードを操作していることがわかります。アップサートの後に常に find_by 操作を行うと、一貫して正しい ID を取得できますが、アップサートの後にクエリを実行する必要があるのは効率が悪いと感じます。

私は何か間違ったことをしていますか?誰かが自分のプロフィールを繰り返し更新しているような操作で、間違った ID が戻ってくるのではないかと心配しています。

4

0 に答える 0