文档结构(仅用于说明)
员工
{
name : "..",
age : ..,
addresses [
{
"street":"...",
"country":{
name:"..",
continent:"..",
Galaxy:".."
}
}
],
company:".."
}
询问 -
我只有地址 -> 街道(字符串类型)和地址 -> 国家 -> 名称(字符串类型)。我想让所有符合这个标准的员工。
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");
但这将匹配地址#1 中的 street="bla bla" 和 country.name!="hoo" 以及地址#2 中的 street!="bla bla" 和 country.name="hoo" 的员工。你明白了。我不希望这样的员工被退回。
请让我知道这是否可能。非常感谢。