GAE ndb按键过滤(id)

时间:2015-03-16 17:10:37

标签: python google-app-engine google-cloud-datastore app-engine-ndb

我想按键值过滤(如果我可以,按Id)

开发人员控制台提供具有键值的搜索数据。

我想在我的代码中执行:

DataModel.query(DataModel.key > ndb.Key('DataModel', id_value)).order(
                DataModel.date,
                DataModel.times).fetch(2000)

哪个提出错误......

我的id_value是整数。

如何搜索和过滤以获取ID高于id_value的数据?

2 个答案:

答案 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处理大量数据。