我有一个存储在 MongoDB 中的文档,看起来像这样:
{ '_id' : 'XXX', 'myProps' : [ { '_id' : 'YYY', 'propA' : 'ValueA' }, { '_id' : 'ZZZ', 'propA' : 'ValueB' } ] }
我正在使用 Morphia 将其建模为 Java 对象。我想做的是查询myProps
其中propA
值为'ValueA'
. 这可能吗?是否可以在子文档中查询特定值?我尝试过使用以下查询:
myProps.propA == 'ValueA'
...但是,我仍然看到返回的所有值myProps
。我的查询中是否缺少某些内容?还是不能使用 Morphia/MongoDB 进行这样的查询?
更新:到目前为止我的代码......
我的实体和嵌入式类:
@Entity
public class MyTestClass implements Serializable {
@Id
private ObjectId id;
@Embedded
private List<MyProps> myProps;
...
}
@Embedded
public class MyProps {
private String propA;
...
}
我通过扩展 BasicDAO 为它创建了适当的 DAO 类。这是我的查询:
Query<MyTestClass> q = this.myTestClassDAO.createQuery();
q.field("myProps.propA").qual("ValueA");
MyTestClass result = q.get();
代码正确执行,但是当我查看时,result.getMyProps()
我看到一个包含所有myProps
值的列表,而不仅仅是带有propA == 'ValueA'
.