次のようなドキュメントが 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()
とmyProps
、propA == 'ValueA'
.