ドキュメント構造 (説明用)
従業員
{
name : "..",
age : ..,
addresses [
{
"street":"...",
"country":{
name:"..",
continent:"..",
Galaxy:".."
}
}
],
company:".."
}
クエリ -
Addresses -> street (type String) と Addresses -> country -> name (type String) しかありません。そして、この基準に一致するすべての従業員を取得したいと考えています。
Address a1 = new Address();
a1.setStreet("bla bla");
Country c = new Country();
c.setName("sth");
a1.setCountry(c);
Query<Employee> q = ds.createQuery(Employee.class).field("addresses").hasThisElement(a1)
結果を取得しません (実際に一致する場合)。部分的な「国」ドキュメントの一致が原因のようです。Country のすべてのフィールドに 入力すると、期待どおりの結果が得られます。
質問 #1 : 上記の回避策はありますか?
質問 #2 : 住所は配列であり、複数の (address#street, country#name) ペアを取得できます。また、特定のペアに一致する従業員のリストが必要です。何かのようなもの:
Query<Employee> q = ds.createQuery(Employee.class).field("addresses").hasThisElement(a1).field("addresses").hasThisElement(a2).field(..) // and so on
注:アドレスの一致を次のように分類できます
Address a = new Address();
a.setStreet("bla bla");
q.createQuery(Employee.class).field("addresses").hasThisElement(a).field("addresses.country.name").equal("hoo");
しかし、これは Employee where street="bla bla" and country.name!="hoo" in address#1 と、street!="bla bla" and country.name="hoo" address #2 に一致します。あなたは要点を理解します。そのような従業員を返してほしくありません。
これが可能かどうか教えてください。どうもありがとう。