相关疑难解决方法(0)

mongodb中的异构批量更新

我知道我们可以用mongodb批量更新文件

db.collection.update( criteria, objNew, upsert, multi )
Run Code Online (Sandbox Code Playgroud)

在一个db调用中,但它是同类的,即所有受影响的文档都遵循一种标准.但我想做的就是这样

db.collection.update([{criteria1, objNew1}, {criteria2, objNew2}, ...]
Run Code Online (Sandbox Code Playgroud)

,发送多个更新请求,可以在单个db调用中更新可能完全不同的文档或文档类.

我想在我的应用程序中做的是插入/更新一堆具有复合主键的对象,如果该键已经存在,则更新它; 否则插入它.

我可以在mongodb的一个组合中完成所有这些吗?

mongodb

9
推荐指数
1
解决办法
9299
查看次数

Mongoid批量更新/ Upsert替代?

我知道Mongoid v3 +支持批量插入Model.collection.insert().但是,我不认为它支持批量更新,其中每个记录的属性不同(所以我认为update_all也不会).有没有办法进行批量更新/ upsert而不是单记录查找和更新?

这是一个简化的例子,我有2个模型:

class Product
  ...
  has_and_belongs_to_many :lists
end

class List
  ...
  has_and_belongs_to_many :products
end
Run Code Online (Sandbox Code Playgroud)

Product创建new时,我将其与一个或多个相关联Lists.但是,我还需要Product每天更新属性而不会丢失List参考信息(我确定验证Product不会运行).

一种方法,不使用批处理,是调用find_or_initialize_byProduct和更新的属性.但对10K-1M +记录这样做是非常耗时的.

使用批量插入的另一种方法是做Product.delete_all,然后Product.collection.insert(...),但是这会产生新的,product_ids并且List不再保持与之的关系.

在这个例子中有没有办法进行批量更新或upsert?

ruby-on-rails mongodb batch-processing mongoid

6
推荐指数
1
解决办法
2360
查看次数