关于网友提出的“ mongodb如何获得集合中所有最后更新的一批数据?”问题疑问,本网通过在网上对“ mongodb如何获得集合中所有最后更新的一批数据?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: mongodb如何获得集合中所有最后更新的一批数据?描述:
标题的表述应该有问题。不过不知道怎么简单描述。
情况是这样的,一个集合,每隔几天会更新一批数据,他们都有当天统一的一个时间戳。
有没有一种更有效率的写法能够直接获得所有时间戳为最近的记录的方法?
目前的处理手法是
collection.find().sort('timestamp', pymongo.DESCENDING).limit(1)
得到一个最近的一个时间戳
然后在
collection.find({‘timestamp’:最近时间戳})
总觉得在哪看到过更简洁的写法,
求助。
解决方案1:
综合考虑效率和难易程度,我觉得你这样写法没有问题,除此之外我也没有想出来特别好的替代方案。不知道你说的『更简洁』的写法是不是aggregation中group+$push的写法。如果是的话那样的写法不如现在的效率好,并且有返回结果过大时异常的可能性。
不过有些额外的问题我想说明一下。即使是一批更新的数据,timestamp
不见得一样吧;或者说不是一批更新的文档timestamp
不见得不一样。要区分『一批更新』这个概念,同一批更新的文档必须要有一个唯一的『批次号』,可以是ObjectId
或是GUID
。建议ObjectId
,它比较短所以性能略好。