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

时间:2019-02-08 22:09:08

标签: firebase google-cloud-firestore

这是测试数据库的架构: enter image description here

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

我已经检查了array_contains运算符是否为firestore,但问题是我的数组具有map,然后具有field ID。

谢谢

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

正如道格所说,您无法查询它, 但是,如果您可以将数据结构化为类似于this

  1. 将数据存储为地图
  2. 使用id作为键,使用name作为值
  3. 现在您可以编写查询,该查询可以获取联系人具有id=1的所有文档
db.collection("test").where("contacts.1", ">=", "").get()