Ruby Mongoid upsert域
我想使用mongoid的upsert方法,但它应该检查不同于_id的字段上是否存在文档(mongoimport命令允许您使用--upsertFields选项执行此操作)。Ruby Mongoid upsert域,ruby,mongodb,mongoid,Ruby,Mongodb,Mongoid,我想使用mongoid的upsert方法,但它应该检查不同于_id的字段上是否存在文档(mongoimport命令允许您使用--upsertFields选项执行此操作)。 有没有办法用mongoid做到这一点呢?我会回答我自己的问题,这应该是可以预期的: person = Person.find_or_create_by(somefield: somefield) person.update_attributes(otherfield: otherfield, somethingelse: so
有没有办法用mongoid做到这一点呢?我会回答我自己的问题,这应该是可以预期的:
person = Person.find_or_create_by(somefield: somefield)
person.update_attributes(otherfield: otherfield, somethingelse: somethingelse)
事实上,mongoid已经打包到your_model.collection.method中。因此,您可以这样做:
Person.collection.update_one({main_key: value}, {"$set":{key: value}}, {upsert: true})
这是可行的,但对我来说并不是最终的解决方案,因为它需要太长的时间(50秒vs 3秒的mongoimport)。欢迎任何替代解决方案