Firestore:如何从数组的映射中查询数据

joh*_*ohn 19 firebase google-cloud-firestore

这是测试数据库的架构: 在此处输入图片说明

我想编写一个查询,该查询可以获取任何数组索引中联系人的 id=1 的所有文档。

我已经检查array_contains了 firestore 的运算符,但问题是我的数组有地图,然后有字段 ID。

谢谢

Dou*_*son 21

您目前无法构建在数组中查找对象字段的查询。您可以在数组中找到的唯一内容是数组元素的全部内容,而不是元素的一部分。

对于 NoSQL 类型的数据库,通常的做法是以适合您的查询的方式构建数据。因此,在您的情况下,您将不得不对数据进行结构化以让您找到数组项包含某个字符串的文档。因此,您可以创建另一个仅包含要查询的字符串的数组。您必须确保使这些数组保持最新。

您也可以在此处重新考虑使用数组。数组适用于位置数据,但除非这些联系人需要按特定顺序存储,否则您可能希望存储一个对象,其键是 id,其字段数据还包含 id 和名称。

  • 或者一个单独的对象,其中的键映射到真/假之类的东西。 (2认同)

小智 8

正如 Doug 所说,您无法查询它,但是,如果您可以将数据结构化为如下所示

  1. 将您的数据存储为地图
  2. 用作id键和name
  3. 现在您可以编写一个查询来获取联系人拥有的所有文档id=1
db.collection("test").where("contacts.1", ">=", "").get()
Run Code Online (Sandbox Code Playgroud)