当前位置: 首页 > 知识库问答 >
问题:

跑步!=关于Firestore收集组的查询

周阳成
2023-03-14

比方说,我们有一个名为“餐厅”的集合。对于每家餐厅,都有一个名为“访问过”的子集合,我们在其中捕获每个访问过该餐厅的用户的userId。数据库如下所示:

我们选择创建子集合而不是在餐厅内使用数组,因为我们预计这个数字会增加到非常大的文档大小。此外,我们不确定涉及超长数组(其中1000个数组中的100个)的查询的性能。

总之,现在我们有了这些称为“visited”的子集合,我们可以使用集合组查询和索引来执行类似于“查找用户访问的所有餐厅:”abcdxyz和“==”查询,并按照一定的顺序,比如说,按visitedOn日期/时间排序。

以下是我们在python中尝试运行的内容:

db.collection_group(u'visited').where(u'userId', u'!=', u'idoftheuser').order_by('visitedOn', direction=firestore.Query.DESCENDING)

当我们运行此命令查找此用户从未访问过的餐厅时,Firestore抛出以下错误:

ValueError:运算符字符串 '! =' 无效。有效的选择是:

这是真的吗?为什么他们不允许在单个集合中使用“!=”查询?我们怎样才能避开这个问题?我们真的不想再对数据库模型做任何更改了。已经太多了。

有什么建议吗?

共有1个答案

楚威
2023-03-14

对于不相等(!=)查询,有一些限制:

在复合查询中,范围(

这就是为什么会出现以下查询:

db.collection_group(u'visited').where(u'userId', u'!=', u'idoftheuser').order_by('visitedOn', direction=firestore.Query.DESCENDING)

没用。除此之外,还请注意,如果查询包含where()order\u by()调用,则需要创建索引。

 类似资料:
  • 我正在开发一款iOS应用程序,它有(哇,惊喜!)聊天功能。整个应用程序大量使用Firebase工具,对于数据库,我正在使用新的云Firestore解决方案。 目前我正在使用数据库规则加强安全性,但我对自己的数据模型有点挣扎:)这可能意味着我的数据模型选择不当,但我真的很满意,除了实现规则部分。 模型的对话部分如下所示。在我的数据库的根目录下,我有一个集合: 然后我对每个对话都有一个子集合,称为消息

  • 我的Ionic 5应用程序中有以下Firestore数据库结构。 书(集合) {bookID}(带有book字段的文档) 赞(子集合) {userID}(文档名称作为带有字段的用户ID) 集合中有文档,每个文档都有一个子集合。Like collection的文档名是喜欢这本书的用户ID。 我正在尝试进行查询以获取最新的,同时尝试从子集合中获取文档以检查我是否喜欢它。 我在这里做的是用每个图书ID调

  • 我正在intelliJ上用livereload测试spring-boot-devtools。我有一个简单的spring boot应用程序,效果很好。 当我从maven命令“mvn-spring-boot:run”启动应用程序时,除了livereload服务器不启动之外,所有工作正常。控制台上没有显示消息,chrome扩展显示错误,无法连接到livereload服务器。 如果我使用(右鼠标按钮/Ru

  • 我正在使用Firebase Cloud Firestore,我想修改我的规则来限制用户查询集合。 这是不允许的:

  • 我想我读到您可以使用新的Firebase Firestore查询子集合,但我没有看到任何示例。例如,我以以下方式设置了Firestore: 舞蹈[收藏] DanceName 歌曲[收藏] 松南 我如何才能查询“查找所有的舞蹈在songName=='x'”