2017-03-15 63 views
1

如何编写Java代码的下方MongoDB的查询

db.getCollection('testing') 
     .find({"Mid" : "652ba8c0", 
      "sname" : "biole", 
      "timeVal" : { $gte : ISODate("2017-03-14T13:40:39.117Z") 
         , $lte : ISODate("2017-03-14T14:30:12.419Z")} 
      }) 
     .sort({"timeVal" : -1}) 

我试着写象下面,但它并没有获取任何记录,相反,它要获取可用的记录(上述MongoDB的查询它获取200条记录)我使用下面的jar文件

dbCollection.find(Filters.and(Filters.eq("XDK", engno), 
           Filters.eq("sensorName", sensor), 
           Filters.gte("timestamp", startMinusDate), 
           Filters.lte("timestamp", startPlusDate))) 
      .sort(new BasicDBObject("timestamp", 1)); 

dbCollection.find(Filters.and(Filters.eq("XDK", engno), 
           Filters.eq("sensorName", sensor), 
           Filters.and(Filters.gte("timestamp", startMinusDate), 
              Filters.lte("timestamp", startPlusDate)))) 
      .sort(new BasicDBObject("timestamp", 1)); 

<dependency> 
    <groupId>org.mongodb</groupId> 
    <artifactId>mongo-java-driver</artifactId> 
    <version>3.3.0</version> 
</dependency> 
+0

你的约会是怎样的? startMinusDate和startPlusDate的值是多少? – Veeram

回答

1

对于MongoDB Java驱动程序;

Document document = new Document(); 
document.append("Mid" , "652ba8c0").append("sname" , "biole"); 
document.append("timeVal" , new Document().append("$gte", startMinusDate).append("$lte", startPlusDate)); 
collection.find(document).sort(new Document().append("timeVal", -1)); 
+0

以上不适用于日期字段。但是,当我尝试这个整数字段..代码整数字段。但同样不适用于日期字段。 (我尝试的日期分开,它能正确工作,因此,我的数据没有问题,不知何故日期字段是不工作) 文献文档=新的文档(); document.append(“lb”,5); (“ub”,new Document()。append(“$ gte”,14).append(“$ lte”,16)); dbCollection.find(document).sort(new Document()。append(“ub”,1)); – Yoga

+0

我在帖子中尝试的代码以及工作,这是日期格式的问题。因此将其转换为UTC格式。 – Yoga