Mongoid upsert字段

问题描述:

我想使用mongoid的upsert方法,但它应检查文档是否存在与_id不同的字段(mongoimport命令允许您使用--upsertFields选项执行此操作)。 有没有办法做到这一点与mongoid?Mongoid upsert字段

我会回答我的问题,这应该按预期工作:

person = Person.find_or_create_by(somefield: somefield) 
person.update_attributes(otherfield: otherfield, somethingelse: somethingelse) 
+0

这有效,但对我来说这不是最终的解决方案,因为它需要很长的时间(50秒和3秒的mongoimport)。欢迎任何替代解决方案 – Dawid 2013-02-27 16:55:49

事实上,mongoid已经打包成your_model.collection.method.so你可以做UPSERT这样的:

Person.collection.update_one({main_key: value}, {"$set":{key: value}}, {upsert: true})