鍍金池/ 問答/數(shù)據(jù)庫/ mongodb如何獲得集合中所有最后更新的一批數(shù)據(jù)?

mongodb如何獲得集合中所有最后更新的一批數(shù)據(jù)?

標(biāo)題的表述應(yīng)該有問題。不過不知道怎么簡單描述。

情況是這樣的,一個(gè)集合,每隔幾天會更新一批數(shù)據(jù),他們都有當(dāng)天統(tǒng)一的一個(gè)時(shí)間戳。
有沒有一種更有效率的寫法能夠直接獲得所有時(shí)間戳為最近的記錄的方法?

目前的處理手法是
collection.find().sort('timestamp', pymongo.DESCENDING).limit(1)
得到一個(gè)最近的一個(gè)時(shí)間戳

然后在
collection.find({‘timestamp’:最近時(shí)間戳})

總覺得在哪看到過更簡潔的寫法,
求助。

回答
編輯回答
愿如初

綜合考慮效率和難易程度,我覺得你這樣寫法沒有問題,除此之外我也沒有想出來特別好的替代方案。不知道你說的『更簡潔』的寫法是不是aggregation中g(shù)roup+$push的寫法。如果是的話那樣的寫法不如現(xiàn)在的效率好,并且有返回結(jié)果過大時(shí)異常的可能性。
不過有些額外的問題我想說明一下。即使是一批更新的數(shù)據(jù),timestamp不見得一樣吧;或者說不是一批更新的文檔timestamp不見得不一樣。要區(qū)分『一批更新』這個(gè)概念,同一批更新的文檔必須要有一個(gè)唯一的『批次號』,可以是ObjectId或是GUID。建議ObjectId,它比較短所以性能略好。

2017年4月13日 12:11