3

我目前正在重构我们的一些 mongo 查询代码,以摆脱 Morphia 1.3 中不推荐使用的方法。尝试使用 index 运行 find 和 Modify 查询时遇到问题。目前,我们的遗留代码正在以这种方式在查询上设置索引: 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 查询设置索引的最佳方法是什么

4

0 回答 0