我想按键值过滤(如果我可以,按Id)
开发人员控制台提供具有键值的搜索数据。
我想在我的代码中执行:
DataModel.query(DataModel.key > ndb.Key('DataModel', id_value)).order(
DataModel.date,
DataModel.times).fetch(2000)
哪个提出错误......
我的id_value是整数。
如何搜索和过滤以获取ID高于id_value的数据?
答案 0 :(得分:4)
按键上的不等式过滤很好,错误的是你不能将不等式的过滤与一个事物的排序结合起来,并通过另一个事物排序。在限制: ...:
下引用https://cloud.google.com/appengine/docs/python/ndb/queries结合太多过滤器,使用不等式进行多次过滤 属性,或将不等式与排序顺序组合在一起 目前不允许使用不同的财产。
这三个限制中的最后一个是您遇到的问题。
答案 1 :(得分:0)
一种选择是从查询中获取所有结果,然后在程序中对它们进行排序(而不是在.order()
子句中)。
第二个选项是查询所有三个字段()以减少结果数量,然后按上面的方式对它们进行排序:
DataModel.query(DataModel.key > ndb.Key('DataModel', id_value),
DataModel.date > some_date,
DataModel.times > some_times)
第三种选择是使用MapReduce处理大量数据。