我想编写一个查询,该查询可以获取联系人在任何数组索引中的id = 1的所有文档。
我已经检查了array_contains
运算符是否为firestore,但问题是我的数组具有map,然后具有field ID。
谢谢
答案 0 :(得分:3)
您目前无法建立在数组内查找对象字段的查询。在数组中只能找到数组元素的全部内容,而不是元素的一部分。
对于NoSQL类型数据库,通常的做法是以适合查询的方式来结构化数据。因此,在您的情况下,您将必须对数据进行结构化,以便在数组项包含特定字符串的地方找到文档。因此,您可以创建另一个仅包含要查询的字符串的数组。您将确保使这些阵列保持最新状态。
您还可以在此处重新考虑使用数组。数组非常适合位置数据,但是除非这些联系人需要按特定顺序存储,否则您可能想要存储一个对象,该对象的键是id,并且其字段数据还包含id和名称。
答案 1 :(得分:1)
正如道格所说,您无法查询它, 但是,如果您可以将数据结构化为类似于this
id
作为键,使用name
作为值id=1
的所有文档db.collection("test").where("contacts.1", ">=", "").get()