У меня есть документ, хранящийся в MongoDB, который выглядит примерно так:запросов для конкретных поддокументами в MongoDB/Морфий
{ '_id' : 'XXX', 'myProps' : [ { '_id' : 'YYY', 'propA' : 'ValueA' }, { '_id' : 'ZZZ', 'propA' : 'ValueB' } ] }
Я использую морфий для моделирования этого в объекты Java. Я хотел бы сделать запрос для элементов в пределах myProps
, которые имеют значение propA
'ValueA'
. Это возможно? Можно ли запрашивать определенные значения внутри поддокумента? Я попытался с помощью запросов, как:
myProps.propA == 'ValueA'
... но я до сих пор вижу все значения myProps
возвращаются. Есть что-то, что мне не хватает в моем запросе? Или невозможно сделать такой запрос с помощью Morphia/MongoDB?
UPDATE: Мой код до сих пор ...
Мои сущности и встроенные классы:
@Entity
public class MyTestClass implements Serializable {
@Id
private ObjectId id;
@Embedded
private List<MyProps> myProps;
...
}
@Embedded
public class MyProps {
private String propA;
...
}
Я создал соответствующий класс DAO для него путем расширения BasicDAO. Вот мой запрос:
Query<MyTestClass> q = this.myTestClassDAO.createQuery();
q.field("myProps.propA").qual("ValueA");
MyTestClass result = q.get();
код правильно выполняется, но когда я смотрю на result.getMyProps()
я вижу список, содержащий все myProps
значений, а не только те, с propA == 'ValueA'
.
Можете ли вы показать код, который вы пробовали до сих пор? – evanchooly