Почти тот же вопрос, что и Область, сложный связанный запрос , но с важным вариантом:
В официальных документах https://realm.io/docs/java/latest/#link-queries - есть пример выбора владельцев"коричневых" собак и владелец "пушистых" собак.Не, как написано в предыдущем вопросе, «коричневые пушистые» собаки, потому что примеры кода не реализуют конъюнктуру.
Поэтому мой вопрос: как получить только лиц, которые владеют «коричневыми» и «пушистыми»собака (оба условия на одну и ту же собаку)?Это только U2, учитывая данные примера.Во втором примере кода из документации добавлен третий фильтр «Желтый», поэтому ответ кажется правильным, но в полях одного и того же пса все еще нет соединения.Ниже приведены мои попытки из документов:
// returns both U1 and U2, because U1 owns a Brown dog, and U2 a Fluffy
RealmResults<Person> r1 = realm.where(Person.class)
.equalTo("dogs.name", "Fluffy")
.equalTo("dogs.color", "Brown")
.findAll();
// returns both U1 and U2, because U1 has a Fluffy but it is red, and has also a brown dog (Fido)
RealmResults<Person> r2 = realm.where(Person.class)
.equalTo("dogs.name", "Fluffy")
.findAll()
.where()
.equalTo("dogs.color", "Brown")
.findAll();
Мне нужно проверить соединение условий над подэлементами в массиве.Мне нужно реализовать это как запрос, чтобы заполнить адаптер.Это возможно в Realm?
Я мечтал о новом типе группировки для условий, которые позволяют указывать несколько условий для элементов поля списка, например:
RealmResults<Person> r3 = realm.where(Person.class)
.beginFilterAny("dogs") // keep only Persons whose at least one dog satisfy:
.equalTo("name", "Fluffy")
.equalTo("color", "Brown")
.endFilterAny()
.findAll();