如果你最終一致性OK(即你可能看不到非常最新一出,立即),你只需添加具有auto_now_add =真然後DateTimeProperty的運行查詢由該屬性排序,以獲得最新的一個。 (這也是近似的,因爲您可能將多個實體保存在一起,這些實體的排列順序與您預期的不同)。
如果您需要它是完全正確的,我可以看到的唯一方法是創建一個實體,將持有對最新條目的引用,並在與創建的條目相同的事務中更新該實體。例如:
class LatestHolder(ndb.Model):
latest = ndb.KeyProperty('Entry')
# code to update:
@ndb.transactional(xg=True)
def put_new_entry(entry):
holder = LatestHolder.get_or_insert(name='fixed-key')
holder.latest = entry
holder.put()
entry.put()
請注意,我在這裏使用了一個全局固定的密鑰名稱,而父類沒有父類。這是一個瓶頸;如果您的「最新條目」只需要來自特定的父級,那麼您可能更願意使用不同的父級創建多個LatestHolder實體,在這種情況下,您只需將父鍵傳遞給get_or_insert即可。
具有索引auto_now_add = True字段的另一個好處是便於下載數據。我們大量使用這些數據來存儲需要存儲在商業智能數據庫中的數據。您可以非常輕鬆地通過很好的控制隨時隨地分發下載內容。一種查詢遊標管理的客戶端。 Hate不得不爲這樣的事情貢獻一個索引,但是我們喜歡這樣設置,並且使用它很多。 HTH。 – stevep 2013-03-03 18:06:27