0

我想读取 mongodb 中 col1(value) 和 col2(value) 之间的所有记录。所以我写了这段代码,但它不能正常工作。如何实现这个查询?

我的实体是:在我的实体中,我认为日期很长,因为日或月对我来说并不重要。

private long id;
private String name;
private String description;
private long born_date ; // col1
private long death_date; // col2

200 到 500 之间的所有记录

      col1(val = 200)       col2(val = 500)
------|---------------------|------------

我的代码:

 Query betweenQuery = new Query();
    betweenQuery.addCriteria(Criteria.where("col1").gte(vla1)).
    addCriteria(Criteria.where("col2").lte(val2));
    return MongoOperations.find(betweenQuery , Entity.class);
4

1 回答 1

1

如前所述,将这样的条件拆分为两个字段是没有意义的。您真正想要的可能是“两个”字段上的相同条件:

    Query betweenQuery = new Query();
    betweenQuery.addCriteria(Criteria.where("col1").gte(200).lte(500)).
            addCriteria(Criteria.where("col2").gte(200).lte(500));

像这样序列化:

{ "col1" : { "$gte" : 200 , "$lte" : 500 } , "col2" : { "$gte" : 200 , "$lte" : 500 } }

因此,基本上每一列都必须包含介于所选值之间的值。

另请注意,此处的“BETWEEN”被认为是“包容性的”,否则分别更改为$gt$lt

于 2015-03-11T07:27:48.137 回答