在mongodb中使用日期和时间对集合进行排序

在mongodb中使用日期和时间对集合进行排序,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我有下面的用例。我需要专家的建议来解决我的问题 以下是我的文件结构 {\u id、名称、创建dtm、设备名称、池名称、事件类型、位置、消息 } 我的数据库中有100个集合。在100条记录中,有30条记录的日期和时间相同(也没有毫秒/微秒的差异) 我编写了分页,方法是按创建的dtm对集合进行排序,并设置Limit()和skip() 在第一页上,我是1-25条记录,30条记录中只有几条记录。(1-20条其他记录和30条记录中的5条记录) 在第二页,5条记录中的几条记录再次出现,这些记录已经在第一页列

我有下面的用例。我需要专家的建议来解决我的问题

  • 以下是我的文件结构 {\u id、名称、创建dtm、设备名称、池名称、事件类型、位置、消息 }
  • 我的数据库中有100个集合。在100条记录中,有30条记录的日期和时间相同(也没有毫秒/微秒的差异)
  • 我编写了分页,方法是按创建的dtm对集合进行排序,并设置Limit()和skip()
  • 在第一页上,我是1-25条记录,30条记录中只有几条记录。(1-20条其他记录和30条记录中的5条记录)
  • 在第二页,5条记录中的几条记录再次出现,这些记录已经在第一页列出

  • 根据我对Mongo所知甚少,我认为仅使用创建的dtm进行排序是不够的。请告知解决此问题的最佳方法。

    在MongoDB中,
    \u id
    (ObjectID)是唯一标识符,它还存储创建文档时的时间戳。因此,您可以使用
    \u id
    对文档进行排序,这样您就不会再次获得相同的文档

    有关更多信息,请查看
    \u id
    的官方文档


    希望这会有所帮助:)

    在MongoDB中,
    \u id
    (ObjectID)是唯一的标识符,它还存储文档创建时的时间戳。因此,您可以使用
    \u id
    对文档进行排序,这样您就不会再次获得相同的文档

    有关更多信息,请查看
    \u id
    的官方文档


    希望这会有所帮助:)

    谢谢Vijay,这真的很有帮助。我还有一个问题。如果我对时间戳(ts)和_id进行排序,那么我必须用ts和_id编写一个复合索引来解决性能问题。但目前,我在_id,ts上定义了一个单独的索引。使用这些变量的复合索引是一个好主意。是的,你可以使用复合索引,事实上,复合索引是优化复杂查询的唯一方法。你可以参考这个进行优化谢谢Vijay,这真的很有帮助。我还有一个问题。如果我对时间戳(ts)和_id进行排序,那么我必须用ts和_id编写一个复合索引来解决性能问题。但目前,我在_id,ts上定义了一个单独的索引。使用这些变量的复合索引是一个好主意。是的,你可以使用复合索引,事实上,复合索引是优化复杂查询的唯一方法。你可以参考这本书optimization@Praveen如果答案有效,请批准,以便我们可以结束此问题。@Praveen如果答案有效,请批准,以便我们可以结束此问题。