我正在嘗試使用AppEngine-MapReduce。我知道如何對某個entity_kind的所有實體執行操作,但是當實體具有date屬性時,僅對數據範圍上的實體進行操作最簡單的方法是什麼?有沒有簡單的方法將參數傳遞給映射器?在Google App Engine上使用AppEngine-MapReduce,分析特定日期範圍實體的最簡單方法是什麼?
例如,如果我只是想刪除的實體,其中:
entity.created >= start and entity.created < stop
class Entity(db.Model):
created = db.DateTimeProperty()
from mapreduce import operation as op
def process(entity):
yield op.db.Delete(entity)
如果我創建了一個名爲DateRange的簡單模型,其中每個實體都有DateRange.start和DateRange.stop,該怎麼辦?然後,我可以在所有DateRange實體上執行映射縮減,並將我的其他模型從entity.start提取到entity.stop。例如:def process(entity):someEntities = SomeModel.all()。filter('date> =',entity.start).filter('date <',entity.stop)好像這是最簡單的方法使用當前的實現來查看特定的日期範圍。在此先感謝尼克。 – Chris 2010-10-23 10:46:56
當然,但是您正在複製大部分mapreduce的分片邏輯來生成日期範圍。但是,如果您只想刪除符合特定條件的記錄,則可能需要考慮將遊標與key_only查詢和任務隊列結合使用。 – 2010-10-23 12:06:41
我同意。刪除記錄只是一個簡單的例子,看看我是否可以在特定日期範圍內執行操作,而不是在所有實體上執行操作。 – Chris 2010-10-25 00:34:42