如何通过_id查询mongo db?

时间:2015-11-26 12:18:42

标签: java spring mongodb spring-data-mongodb database

我在Spring中使用MongoDB。我想通过_id查询数据库。

目前我有这个问题:

Query q = new Query(Criteria.where("_id").is(someId).and("deleted").is(false));

但这不知何故给了我StackOverflowError。这个查询有什么问题?或者更好的方法是什么?

1 个答案:

答案 0 :(得分:3)

使用 $and 运算符Criteria.andOperator()为所有提供的条件创建显式AND查询而不是链接查询,如下所示:

Query q = new Query(
    new Criteria().andOperator(
        Criteria.where("_id").is(someId),
        Criteria.where("deleted").is("false")
    )
);

这通常用于您无法使用Criteria.and()将多个条件添加到同一字段的情况,例如

Query q = new Query();
q.addCriteria(Criteria.where("age").lt(40).and("age").gt(10));

会抛出错误,因此解决方法是使用Criteria.andOperator()作为

Query q = new Query();
q.addCriteria(
    Criteria.where("age").exists(true).andOperator(
        Criteria.where("age").gt(10),
        Criteria.where("age").lt(40)
    )
);