吗啡。如何使用不同的集合(种类)克隆查询

时间:2012-02-29 13:01:19

标签: mongodb morphia

问题在于通过不同集合中的查询进行搜索。

AdvancedDatastore界面中有一种方法:

<T> Query<T> createQuery(String kind, Class<T> clazz, DBObject q);

但它只使用给定的baseQuery创建查询,我需要完全克隆Query但具有不同的DBCollection字段。 有什么建议吗?

以下是我转换查询的方法:

public Query<Vacancy> convertQuery(Query<T> query) {
        QueryImpl<T> queryImpl = (QueryImpl<T>) query;
        DBObject dbO = queryImpl.getQueryObject();
        Query<T> our_query = ((AdvancedDatastore)this.getDatastore()).createQuery("AnotherCollectionName", T.class, dbO);           
        return our_query;
    }

更新

反射效果很好,但由于性能不好,我不喜欢这种肮脏的方式。

1 个答案:

答案 0 :(得分:1)

现在看来这是一个很好的解决方案。

,一旦创建了查询,就无法更改基础集合/种类。

如果您需要此功能,则需要为Query / QueryImpl实现深度克隆运算符,或者请求在morphia中完成。