微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 UUID 和时间戳寻求分页

如何解决使用 UUID 和时间戳寻求分页

我使用这个命令插入文档:

db.collection.insertMany([{
  _id: "21cc6c1a-736b-4da8-bb5b-2b5d95533231",timestamp: "2021-02-16T03:17:55.163Z"
},{
  _id: "f779e93e-80b8-43c7-866d-ce0a715d8d60",timestamp: "2013-07-16T19:20:30.45Z"
},{
  _id: "8a8b17b3-10e3-4bd2-810d-4abf9f8558be",timestamp: "2012-07-16T19:20:30.45Z"
},{
  _id: "7bf3bfc8-289a-4ae4-be50-1467832769be",timestamp: "2011-07-16T19:20:30.45Z"
},{
  _id: "e4564e45-d7df-4cac-a91a-4f0796da38db",timestamp: "2000-07-16T19:20:30.45Z"
},{
  _id: "be89c142-7e27-4ab8-bce1-488a3a6470fd",timestamp: "1999-07-16T19:20:30.45Z"
},{
  _id: "f4156dfb-8d1e-4a46-991a-e381c73c929a",timestamp: "1998-07-16T19:20:30.45Z"
},{
  _id: "ca6c6634-716d-448f-aebe-36c892da2719",timestamp: "1997-07-16T19:20:30.45Z"
},{
  _id: "9b0062ab-4d9b-4e2b-b244-8e5a23c61b47",{
  _id: "3ca2475e-9a39-445b-9828-846fde7c85d4",timestamp: "1997-07-16T19:20:30.45Z"
}])

如果我显示从最新到最新的所有文档,我会这样做:

> db.collection.find().sort({ timestamp: -1,_id: -1})
{ "_id" : "21cc6c1a-736b-4da8-bb5b-2b5d95533231","timestamp" : "2021-02-16T03:17:55.163Z" }
{ "_id" : "f779e93e-80b8-43c7-866d-ce0a715d8d60","timestamp" : "2013-07-16T19:20:30.45Z" }
{ "_id" : "8a8b17b3-10e3-4bd2-810d-4abf9f8558be","timestamp" : "2012-07-16T19:20:30.45Z" }
{ "_id" : "7bf3bfc8-289a-4ae4-be50-1467832769be","timestamp" : "2011-07-16T19:20:30.45Z" }
{ "_id" : "e4564e45-d7df-4cac-a91a-4f0796da38db","timestamp" : "2000-07-16T19:20:30.45Z" }
{ "_id" : "be89c142-7e27-4ab8-bce1-488a3a6470fd","timestamp" : "1999-07-16T19:20:30.45Z" }
{ "_id" : "f4156dfb-8d1e-4a46-991a-e381c73c929a","timestamp" : "1998-07-16T19:20:30.45Z" }
{ "_id" : "ca6c6634-716d-448f-aebe-36c892da2719","timestamp" : "1997-07-16T19:20:30.45Z" }
{ "_id" : "9b0062ab-4d9b-4e2b-b244-8e5a23c61b47","timestamp" : "1997-07-16T19:20:30.45Z" }
{ "_id" : "3ca2475e-9a39-445b-9828-846fde7c85d4","timestamp" : "1997-07-16T19:20:30.45Z" }

假设 1 页是 5 个文档,我如何将文档 be89c142 获取到 3ca2475e? 我认为这些命令会起作用,但结果很奇怪:

> db.collection.find( {  timestamp: { $lte: "2000-07-16T19:20:30.45Z" } }).sort({timestamp: -1,_id: -1})
{ "_id" : "e4564e45-d7df-4cac-a91a-4f0796da38db","timestamp" : "1997-07-16T19:20:30.45Z" }

(不应包含 e4564e45)

> db.collection.find( { _id:  {        $lt: "e4564e45-d7df-4cac-a91a-4f0796da38db"      },timestamp: { $lte: "2000-07-16T19:20:30.45Z" } }).sort({timestamp: -1,_id: -1})
{ "_id" : "be89c142-7e27-4ab8-bce1-488a3a6470fd","timestamp" : "1999-07-16T19:20:30.45Z" }
{ "_id" : "ca6c6634-716d-448f-aebe-36c892da2719","timestamp" : "1997-07-16T19:20:30.45Z" }

(缺少 f4156dfb)

> db.collection.find(   { _id:     {        $lt: "e4564e45-d7df-4cac-a91a-4f0796da38db"      }   } ).sort({ timestamp: -1,"timestamp" : "2021-02-16T03:17:55.163Z" }
{ "_id" : "8a8b17b3-10e3-4bd2-810d-4abf9f8558be","timestamp" : "2011-07-16T19:20:30.45Z" }
{ "_id" : "be89c142-7e27-4ab8-bce1-488a3a6470fd","timestamp" : "1997-07-16T19:20:30.45Z" }

(不正确的文件

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。