是否可以在firestore文档中查询相同值的多个字段?
想象一下,我有很多文件,其中每个都描述了一项运动:
sportsRef.collection("sports").documents [
["bowling" : [
"equipment": "bowling ball, bowling alley, bowling shoes",
"description": "bowl the ball" ]]
["football": [
"equipment": "ball, boots, shin pads, goalie gloves",
"description": "kick the ball in the goal" ]]
["darts": [
"equipment": "darts, dartboard",
"description": "throw the dart at the board" ]]
["boxing": [
"equipment": "boxing gloves, ring",
"description": "punch your contender" ]]
["shot put": [
"equipment": "shot put",
"description": "throw the shot put, looks like a ball" ]]
]
有没有办法进行查询,如果我搜索" ball"的值,将返回所有包含" ball"在他们的价值观内因此,在这种情况下,我将返回保龄球,足球和铅球("球"在射击的描述中)。
我问的原因是因为我在我的iOS应用程序中实现了一个UISearchController,并试图通过在我的应用程序中构建一个查询来在我的Firestore中进行搜索。
答案 0 :(得分:1)
Firestore不支持子字符串,正则表达式或全文搜索类型的查询。这些类型的搜索无法按照Firestore管理索引的方式进行扩展。
如果您需要全文搜索,请考虑将数据复制到搜索引擎(如Algolia)中。这种解决方案是discussed in the Firebase docs。
答案 1 :(得分:1)
执行类似操作的一种方法是重构数据,如下所示:
["bowling" : [
"ball": true, "bowling alley": true, "bowling shoes": true,
"description": "bowl the ball" ]]
然后查询“ball”等于true
的文档:
Firestore.firestore().collection("sports").whereField("ball", isEqualTo: true)