首页 > 解决方案 > Firestore Query where 字段可能嵌套在多个级别

问题描述

想象一个像下面这样的文档结构,其中一个字段 likeitemId可能存在于多个嵌套级别:

items: [
  {
    title: 'Heading 1',
    items: [
       {itemId: 123, itemTitle: 'Foo' },
       {itemId: 456, itemTitle: 'Bar' },
    ],
  },
  {itemId: 789, itemTitle: 'Baz' },
]

是否有一个有效的查询,我可以说,Find any document where `itemId == 456'

标签: google-cloud-firestore

解决方案


使用您在此处显示的文档结构,没有任何查询可以执行您想要的操作。问题是itemId存在于数组字段内部,无法查询数组字段的特定键或值数据。此结构没有解决方法。

您需要做的是在此文档中引入一个新字段,该itemId字段在一个可以查询的单个字段中包含所有包含的值。它可以是一个数组字段,其中数组的项目是 itemId 字符串。如果这样做,您将使用数组包含类型查询来查找itemId您要查找的内容。


推荐阅读