2017-10-05 10 views
2

の配列の部分一致、私はこのようになりますテーブルを持っている:AQL:文字列

{"_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"]} 

私が持っているすべての人の名前を検索したいフォード(すなわち、[「ジョージ・ワシントン」 、 "James Madison"])。

FOR doc IN documents 
    FILTER ("Ford Focus" IN doc.cars OR "Ford Mustang" IN doc.cars) 
    RETURN doc.name 

作品もちろん が、私は存在してフォードの種類を知っていないと仮定します。配列内の文字列の一部を検索するにはどうすればよいですか?

答えて

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せずに動作しますが、1が中に発見された後LIMITを使用すると、ドキュメント内の一致する車を探して停止しますそれ。クエリでは、文字列一致にLIKE関数を使用しますが、もちろんany of the othersを使用することもできます。最後に、比較する前に大文字小文字を区別しないと予想されるので、car属性の値を小文字にしました。 あなたのニーズにお応えしてください。

関連する問題