我有一个存储在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'
的值。
答案 0 :(得分:1)
使用流畅的界面,它应该是field("myProps.propA").equal("ValueA").field("myProps.propA").notEqual("ValueB")
。