BulkWriteOperation поиск без учета регистра - PullRequest
0 голосов
/ 17 апреля 2020

Я использую 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);
}
...