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

前述のように、このような条件を 2 つのフィールドに分割することは意味がありません。おそらく、「両方」のフィールドで同じ条件が必要です。

    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 に答える