Я использую BulkWriteOperation
для обновления большого количества объектов. Объекты для обновления выбираются полем «поле», по которому я хочу иметь индекс, но мне нужно искать без учета регистра, и индекс не работает. Я думал о настройке индекса с сопоставлением с силой 2, но я не знаю, как сделать searchQuery переданным BulkWriteOperation с помощью этого сопоставления. Как я могу изменить этот код для поиска без учета регистра с индексом?
public BulkWriteResult updateValues(List<Item> items) {
String collectionName = mongoTemplate.getCollectionName(getClazz());
BulkWriteOperation bulkWriteOperation =
mongoTemplate.getCollection(collectionName).initializeUnorderedBulkOperation();
for (Item item: items) {
BasicDBObject updateQuery = new BasicDBObject();
updateQuery.append("$set", new BasicDBObject()
.append("value", item.getValue())
.append("updateDate", item.getGenerateDate()));
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("field",
Pattern.compile(item.getField(), Pattern.CASE_INSENSITIVE));
bulkWriteOperation.find(searchQuery).updateOne(updateQuery);
}
return bulkWriteOperation.execute(WriteConcern.ACKNOWLEDGED);
}