1

次のようなドキュメントが MongoDB に保存されています。

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

これを Java オブジェクトにモデル化するために Morphia を使用しています。私がやりたいのは、 の値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()myPropspropA == 'ValueA'.

4

1 に答える 1

1

流暢なインターフェイスを使用すると、次のようになりますfield("myProps.propA").equal("ValueA").field("myProps.propA").notEqual("ValueB")

于 2013-09-07T03:47:52.210 に答える