📜  从 firestore 中的数组中搜索字符串 (1)

📅  最后修改于: 2023-12-03 15:21:52.396000             🧑  作者: Mango

在 Firestore 中搜索数组中的字符串

在Firebase Firestore中,我们可以使用各种操作符来查询数据。其中之一是array-contains操作符,它可用于搜索包含特定值的字符串数组。

查询数组中是否存在一个字符串

查询collection中所有包含特定字符串的文档:

db.collection('collectionName')
   .where('arrayField', 'array-contains', 'searchString')
   .get()
   .then(snapshot => {
      //处理结果
   })
   .catch(error => {
      //处理错误
   });

其中,collectionName是所需文档的集合名称,arrayField是包含字符串数组的字段名称,而searchString是要搜索的字符串。

此查询会返回一个QuerySnapshot,其中包含所有满足其条件的文档的数组。每个文档都是一个对象,其中包含该文档的所有字段和相应的值。 可能需要根据具体情况进行进一步过滤。

示例

例如,我们有以下Firestore数据:

Collection: users
   Document: 1
      Name: "Alice"
      Skills: ["Java", "Python", "SQL"]
   Document: 2
      Name: "Bob"
      Skills: ["JavaScript", "Python", "C#"]
   Document: 3
      Name: "Charlie"
      Skills: ["Java", "Ruby", "PHP"]

要搜索具有“Python”技能的所有用户,请执行以下操作:

db.collection('users')
   .where('Skills', 'array-contains', 'Python')
   .get()
   .then(snapshot => {
      snapshot.forEach(doc => {
         console.log(doc.id, '=>', doc.data());
      });
   })
   .catch(error => {
      console.log('Error getting documents:', error);
   });

此查询将返回用户“Alice”和“Bob”的文档,因为他们都具有“Python”技能。

结论

array-contains操作符是Firestore中强大的操作之一,可用于搜索包含特定值的数组。 但是,这种查询可能很慢,尤其是对于数组中包含许多元素的文档。 因此,需要根据数据结构和查询需求进行优化。