0

我有一个简单的模型

@Document(collection = "persons")
public class Person {
    @Id
    private Integer id;
    private String name;
    private Integer age;
    private List<Phone> phones;
    //Getters, setters...
}

我有一个有 2 部手机的用户和一个有一部手机的用户。我想创建一个查询,该查询返回拥有多个电话的每个人。在 mongodb shell 中,我使用以下方法解决了查询:

db.persons.find({$where: 'this.phones.length > 1'})

但是在java代码中我无法重现它。我写了一些我认为它应该有效的东西

Query query = new Query(Criteria.where("phones.length").gt(1));
return mongoTemplate.find(query, Person.class);

但它没有

我正在使用 mongodb 2.4 mongo-java-driver-2.11.1 spring 3.2.2 spring-data-commons-1.5.0.Release

任何帮助将不胜感激!谢谢

4

1 回答 1

0

我找到了解决方案,正确的查询是

new BasicQuery("{ $where: \"this.phones.length > 1\" }")
于 2013-06-21T07:43:43.953 回答