我目前正在重构一些mongo查询代码,以摆脱Morphia 1.3中弃用的方法。尝试使用索引运行查找和修改查询时遇到问题。目前,我们的遗留代码是以这种方式在查询上设置索引:
ds.createQuery(Entity.class).hintIndex("index")
我已删除它以与morphia 1.3一致,现在代码看起来像这样:
new FindOptions.modifier("$hint", "index");
return query.asList(findOptions);
因此,在实际运行之前,我们不会在查询上设置索引。这样可以获得查询,对于upsert来说则更少。
要替换已弃用的findAndModify:findAndModify(Query<T> query, UpdateOperations<T> operations, boolean oldVersion, boolean createIfMissing)
,morphia要求使用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查询设置索引的最佳方法是什么