查询MongoDB / Morphia中的特定子文档

时间:2013-09-06 17:41:43

标签: java mongodb morphia querying nosql

我有一个存储在MongoDB中的文档,如下所示:

{ '_id' : 'XXX', 'myProps' : [ { '_id' : 'YYY', 'propA' : 'ValueA' }, { '_id' : 'ZZZ', 'propA' : 'ValueB' } ] }

我正在使用Morphia将其建模为Java对象。我想要查询myPropspropA值为'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'的值。

1 个答案:

答案 0 :(得分:1)

使用流畅的界面,它应该是field("myProps.propA").equal("ValueA").field("myProps.propA").notEqual("ValueB")