我有一个看起来像这样的表:
{"_key": "1", "name": "George Washington", "cars": ["Ford Focus"]}
{"_key": "2", "name": "John Adams", "cars": ["Pontiac Firebird", "Toyota Corolla"]}
{"_key": "3", "name": "Thomas Jefferson", "cars": ["Toyota Corolla"]}
{"_key": "4", "name": "James Madison", "cars": ["Ford Mustang", "Porsche 911"]}
现在我想找到所有拥有福特的人的名字(即[“乔治华盛顿”,“詹姆斯麦迪逊”])。 当然
FOR doc IN documents
FILTER ("Ford Focus" IN doc.cars OR "Ford Mustang" IN doc.cars)
RETURN doc.name
有效,但我想我不知道有哪些类型的福特存在。如何在数组中搜索字符串的一部分?
答案 0 :(得分:2)
一种方法是这样做:
FOR doc IN documents
LET matchingCars = (
FOR car IN doc.cars
FILTER LOWER(car) LIKE('ford%')
LIMIT 1
RETURN 1
)
FILTER LENGTH(matchingCars) > 0
RETURN doc.name
一些注意事项:查询也可以在没有LIMIT
的情况下运行,但是一旦在文档中找到匹配的汽车,使用LIMIT
将停止搜索匹配的汽车。该查询使用LIKE
函数进行字符串匹配,但您当然可以使用any of the others。最后,我在比较之前降低了car
属性的值,因为可能期望比较不区分大小写。
请根据您的需要进行调整。