3

我想实现一个函数,该函数需要 pymongo 集合中的值以与插入相反的顺序。

我可以想到几种方法:

cursor = collection.find(skip=collection.count()-LIMIT_VAL,limit=LIMIT_VAL)
rows = list(cursor).reverse()

这种方式会有点糟糕,因为 LIMIT_VAL 是一个变量,我不想把整个事情放到内存中。我不想为-veskip 参数提供值。

或者

rows = collection.find(sort={'$natural':-1}, limit=LIMIT_VAL)

我在这里读到,您不能真正依赖自然排序顺序。我不知道这怎么可能不可靠

或者

我在每条记录中插入一个名为 order_of_insert 的值,并对其进行排序,以确保我得到插入的方式。

在我实施这个之前,我需要确定哪种方法是最好的。

4

1 回答 1

1

Mongodb ObjectID 存储精确到秒的时间戳信息。$natural 按此 _id 对其进行排序。如果您的应用程序要在同一秒内插入文档,则插入顺序将不明确。仅当您的收藏设置上限时,$natural 才会对应于广告订单。

  1. 如果您的应用程序可以容忍大部分准确的插入顺序,并且您需要数据永久保存,请使用 $natural 而不限制集合。
  2. 如果您需要准确的插入顺序并且数据集很小/半持久,请限制集合并使用 $natural 排序
  3. 否则,您似乎需要根据自己的时间戳或其他字段进行排序以跟踪订单。
于 2012-11-04T02:52:42.423 回答