Morphia/MongoDb, Использование и индексирование с FindAndModify()
В настоящее время я нахожусь в процессе рефакторинга некоторого нашего кода запросов монго, чтобы избавиться от методов, которые устарели в Morphia 1.3. Я столкнулся с проблемой при попытке выполнить поиск и изменить запрос с индексом. На данный момент наш устаревший код устанавливает индекс для запроса следующим образом:ds.createQuery(Entity.class).hintIndex("index")
Я удалил его, чтобы соответствовать Morphia 1.3, и код теперь выглядит примерно так: new FindOptions.modifier("$hint", "index");
return query.asList(findOptions);
В результате мы не устанавливаем индекс запроса до его фактического выполнения. Это нормально для запросов get, меньше для upsert. Чтобы заменить устаревшую функцию findAndModify: findAndModify(Query<T> query, UpdateOperations<T> operations, boolean oldVersion, boolean createIfMissing)
Морфия просит использовать findAndModify(Query, UpdateOperations, FindAndModifyOptions)
В этом случае я бы ожидал иметь метод модификатора в FindAndModifyOptions
объект, чтобы иметь возможность установить индекс при выполнении запроса. Кажется, я не могу сделать что-то вроде этого:
FindAndModifyOptions findOptions = new FindOptions();
findOptions.modifier("$hint", SUGGESTION_CONTENT_TYPE_INDEX_NAME);
return datastore.findAndModify(query, updateOperations, findAndModifyOptions);
Может кто-нибудь посоветовать, как пройти индекс? Можно ли сделать это с помощью объекта FindAndModifyOptions? Если нет, то каким будет лучший способ установить индекс для запроса upsert