MongoDB使用Filter获取N个最新的Document

时间:2018-02-12 16:47:08

标签: regex mongodb

我想通过过滤器查询Mongodb的最后3个文档。在数据库中,我每15分钟收到300个文件,现在在我的数据库中我有近10,000个文件,在每300个文件中我有一个字符串字段包含 SYSTEM_000_00_SAVING

示例 这就是我的数据库的样子

{
"_id" : ObjectId("5a81986d7aee9536681af520"),
"Data" : "02-02-2017 00:17:22 SYSTEM_000_00_SAVING "
 }

 {
"_id" : ObjectId("5a81986d7aee9536681af521"),
"Data" : "02-02-2017 00:17:22 SyTime_000_09_00:00 "
 }

{
"_id" : ObjectId("5a81986d7aee9536681af522"),
"Data" : "02-02-2017 00:17:22 DPMPow_P01_04_   0.00 "
}

.....某某289或300之后我会再收到

{
"_id" : ObjectId("5a81990c7aee9536681cda23"),
"Data" : "03-03-2017 23:58:11 SYSTEM_000_00_SAVING "
 }

 {
"_id" : ObjectId("5a81990c7aee9536681cda22"),
"Data" : "03-03-2017 23:58:11 AHOnff_028_00_0 "
}

{
"_id" : ObjectId("5a81990c7aee9536681cda21"),
"Data" : "03-03-2017 23:58:10 AHTime_027_09_22:53 "
}

这是我尝试过的-1和1

 db.getCollection('ROB_CAP').find({"Data" : /.*SAVING.*/}).sort({_id:1}).limit(3)
上面的

查询正在运行,但它显示我的结果不正确。

查询结果排序({_ id:1})

 {
"_id" : ObjectId("5a81986d7aee9536681af520"),
"Data" : "02-02-2017 00:17:22 SYSTEM_000_00_SAVING "
 }


 {
 "_id" : ObjectId("5a81986d7aee9536681af667"),
"Data" : "02-02-2017 00:32:23 SYSTEM_000_00_SAVING "
 }

 {
"_id" : ObjectId("5a81986e7aee9536681af7ae"),
"Data" : "02-02-2017 00:47:24 SYSTEM_000_00_SAVING "
}

查询结果排序({_ id:-1})

{
"_id" : ObjectId("5a81987a7aee9536681b6901"),
"Data" : "02-02-2017 23:48:56 SYSTEM_000_00_SAVING "
}
 {
"_id" : ObjectId("5a81987a7aee9536681b67b3"),
"Data" : "02-02-2017 23:33:55 SYSTEM_000_00_SAVING "
 }

 {
"_id" : ObjectId("5a81987a7aee9536681b666c"),
"Data" : "02-02-2017 23:18:54 SYSTEM_000_00_SAVING "
 }

在数据库中,我有从02-02-2017到2017年10月10日的数据,我想从10-10-2017收到上述查询的最后3个文件,但是从开始日期开始显示数据。

如果需要,请告诉我更多信息。

1 个答案:

答案 0 :(得分:0)

我的错误查询正如我预期的那样正常。 实际问题是在数据中,我删除了收集并再次上传数据,它工作。

  db.getCollection('ROB_CAP').find({"Data" : /.*SAVING.*}).sort({_id:1}).limit(3)
如果有人想使用Filter查询MongoDB来获取N个最新的Document,那么

将来。随意测试这个查询它会工作.. 我已经在Robo3T -1.1上测试了这个查询