Python Appengine-列表大小未知的ndb查询
我有一个用Python编写的appengine项目。 我使用一个带有Python Appengine-列表大小未知的ndb查询,python,google-app-engine,google-cloud-datastore,Python,Google App Engine,Google Cloud Datastore,我有一个用Python编写的appengine项目。 我使用一个带有tags=ndb.StringProperty(repeated=True)的模型 我想要的是,给定一个标记列表,搜索列表中包含每个标记的所有对象。 我的问题是列表可能包含任意数量的标记 我该怎么办?当您对列表属性进行查询时,它实际上会在数据存储级别创建一组子查询。单个查询最多可以生成30个子查询。因此,如果列表中的元素超过30个,则会出现异常 为了解决这个问题,您必须更改数据库模型,或者根据列表元素的数量创建多个查询,然后合并
tags=ndb.StringProperty(repeated=True)
的模型
我想要的是,给定一个标记列表,搜索列表中包含每个标记的所有对象。
我的问题是列表可能包含任意数量的标记
我该怎么办?当您对列表属性进行查询时,它实际上会在数据存储级别创建一组子查询。单个查询最多可以生成30个子查询。因此,如果列表中的元素超过30个,则会出现异常 为了解决这个问题,您必须更改数据库模型,或者根据列表元素的数量创建多个查询,然后合并结果。这两种方法都需要由代码处理 更新:如果需要列表中的所有标记来匹配模型中的列表属性,则可以创建基本查询,然后在循环中附加and运算符(如marcadian所述)。例如:
qry = YourModel.query()
qry = qry.filter(YourModel.tags == tag[i]) for enumerate(tags)
但是,正如我前面提到的,您应该注意模型中列表属性的长度和索引配置,以避免索引爆炸之类的问题。有关这方面的更多信息,您可以查看: