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

0 ответов

Другие вопросы по тегам