【发布时间】:2014-06-05 04:04:20
【问题描述】:
我有一个方法可以接收要删除的对象集合。
这就是我现在删除它们的方式
public void deleteAll(Collection<Object> objs){
for(Object obj : objs) {
collection.remove("{ _id: # }", obj.getId());
}
}
我正在做一些非常相似的更新,我正在循环通过传递的对象集合。这似乎非常耗时。
有没有更好的更新/删除方法?
【问题讨论】:
-
虽然我不熟悉这个库中的语法,但基本概念是使用
$in运算符和列表。因此,如果您可以以某种方式将所有_id值“映射”到列表类型中,那么您应该能够使用该运算符作为参数发送。我看到主站点上的Query 示例下有一个关于“查询模板”的部分可能适用于此。 -
感谢 Neil,这对删除有很大帮助。虽然通过更新,我能够提取出所有需要更新的文档,但我仍然不确定如何一次性保存所有新文档。 Jongo 的 with() 和 save() 方法一次只接受 1 个 Object,不接受 Object 的集合
-
正如我之前所说,我对 Jongo 没有任何经验,也没有时间尝试一些示例,但如果你有 MongoDB 2.6 或更高版本,那么本手册部分Bulk Update 可能感兴趣。我已经发布了一些关于用法的答案,并且应该有一种方法可以让您至少从 Java 驱动程序获取原始数据库对象,以便使用所需的
runCommand版本。或者可能是您的 Java 驱动程序公开的其他批量更新 API(如果它是最新版本)。