在同一文档的多次upsert之后,Mongoid返回不一致的doc id

时间:2013-08-13 00:56:41

标签: ruby mongodb mongoid

我在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操作跟踪upsert,我会始终获得正确的id,但是运行upsert后跟查询会感觉效率低下。

我做错了吗?我担心我会在某人的操作中得到错误的身份证明,例如,重复更新他的个人资料。

0 个答案:

没有答案