使用Spring data mongo驱动程序,我想使用单个查询更新mongob中的多个文档,这些文档将具有不同的更新值。我尝试了以下代码,但它对所有符合查询条件的文档具有相同的更新值。
List<Criteria> bigCriteria = new ArrayList<Criteria>();
for (MyClass myClass : myClasses){
Criteria criteria = Criteria.where("_id").is(myClass.getId());
bigCriteria.add(criteria);
}
//next line is just a psedudo code to explain what I intend to do here
query = <<create an or query using bigCriteria created above>>;
Update update = new Update();
update.set("age":11);
mongoOperation.updateMulti(query, update, User.class);
有没有办法用不同的值更新所有文档?
您可以使用批量编写api将具有不同查询条件的文档批发送到服务器,并更新文档。
差不多
int count = 0;
int batch = 100;
BulkOperations bulkOps = mongoOperation.bulkOps(BulkOperations.BulkMode.UNORDERED, User.class);
for (MyClass myClass : myClasses){
Query query = new Query();
Criteria criteria = Criteria.where("_id").is(myClass.getId());
query.addCriteria(criteria);
Update update = new Update();
update.set("age", myClass.getAge());
bulkOps.updateOne(query, update);
count++;
if (count == batch) {
bulkOps.execute();
count = 0;
}
}
if (count > 0) {
bulkOps.execute();
}
问题内容: 我试图了解如何用不同的值更新多行,但我不明白。解决方案无处不在,但对我来说似乎很难理解。 例如,将三个更新更新为1个查询: 我读了一个例子,但我真的不明白如何进行查询。即: 如果在WHERE和IF条件中存在多个条件,我还不太清楚如何执行查询。 问题答案: 您可以这样操作: 我不了解您的日期格式。日期应使用本机日期和时间类型存储在数据库中。
在我的用例中,我希望使用spring-data-mongo一次更新多个文档,即与查询匹配的文档。 这是我一直在尝试的, MongoDB-3.6 spring-data-mongoDB-1.5.5.release
我在MongoDB中使用Java驱动程序。我有一个集合中的文档id列表。我想在每个文档中更新一个字段,该文档的“\u id”等于列表中的一个文档id。在下面的示例中,我尝试了以下方法: 我的目的是用\u id=123、\u id=456和\u id=789更新文档,将其“field”属性设置为59。 我这样做对吗?
有一个表“
exTab 如何使用SQL(与mySQL一起)只返回col1中具有多个相同值、col2中具有多个相同值、但COL3中具有唯一值的行? 例如,在上面的表(exTab)中,val1在col1中出现了4次,对于这4次,val4在col2中出现了3次,但是对于这3次,val7在col3中只出现了一次,所以我想返回这一行(第1行)。考虑到这些条件,第1行将是我希望从此表返回的唯一一行。 我试过和group
问题内容: 我有表SQLite数据库和列,,。行数不断变化(可能增加或减少)。如果我知道每一行的值和行数,是否可以执行一次SQL查询以根据ID更新所有具有不同值的和字段? 例如: SQL查询伪代码: 和是存储和字段的新值的数组。 如果,例如,和包含以下值: …然后查询后的数据库应如下所示: 这可能吗?我现在正在为每个查询更新一行,但是随着行数的增加,它将需要数百个查询。顺便说一下,我正在AIR中做