📅  最后修改于: 2023-12-03 15:21:52.396000             🧑  作者: Mango
在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中强大的操作之一,可用于搜索包含特定值的数组。 但是,这种查询可能很慢,尤其是对于数组中包含许多元素的文档。 因此,需要根据数据结构和查询需求进行优化。