GAE ndb 按键过滤(id)

GAE ndb filter by key(id)

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

开发者控制台提供键值搜索数据。

我想在我的代码中这样做:

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

哪个引发错误...

我的id_value是整数。

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

通过键的不等式过滤很好,问题在于你不能将通过不等式过滤对一件事与通过另一个[=19排序相结合=] 东西。在限制下引用https://cloud.google.com/appengine/docs/python/ndb/queries ...:

combining too many filters, using inequalities for multiple properties, or combining an inequality with a sort order on a different property are all currently disallowed.

这三个限制中的最后一个是您 运行 的限制。

一个选项是从查询中获取所有结果,然后在您的程序中对它们进行排序(而不是在 .order() 子句中)。

第二个选项是查询所有三个字段 () 以减少结果数,然后按上述方式对它们进行排序:

DataModel.query(DataModel.key > ndb.Key('DataModel', id_value),
            DataModel.date > some_date,
            DataModel.times > some_times)

第三种选择是使用MapReduce处理大量数据。