1

我有一个存储在 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'.

4

1 回答 1

1

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

于 2013-09-07T03:47:52.210 回答