5.6.4.type指定のフィルタリング |
---|
2022年4月11日 |
|
既に説明しましたが、特定のtypeを指定することにより、検索結果を特定のtypeに限定することができます。この様に検索結果を限定することをフィルタリングと呼びます。既に説明した例ですが、Storeの entityだけを取り出すには、以下の様に指定します。 |
|
curl -G -X GET 'http://localhost:1026/v2/entities' -d 'type=Store' -d 'options=keyValues' | |
複数のtypeを指定する場合には、カンマを挟んで並べます。 |
|
curl -G -X GET 'http://localhost:1026/v2/entities' -d 'type=Store,Refrigerator' -d 'options=keyValues' |
|
PS C:\Users\owner> curl -G -X GET 'http://localhost:1026/v2/entities' -d 'type=Store,Refrigerator' -d 'options=keyValues' [{"id":"urn:ngsi-ld:Store:001","type":"Store","address":{"streetAddress":"長沼町202-5","addressLocality":"八王子市","addressRegion":"東京都","postalCode":"1920907"},"location":{"type":"Point","coordinates":[139.37158,35.64226]},"name":"ローソン八王子長沼町店"},{"id":"urn:ngsi-ld:Store:002","type":"Store","address":{"streetAddress":"吉浦潭鼓町1-1","addressLocality":"呉市","addressRegion":"広島県","postalCode":"7370843"},"category":"ConvenienceStore","description":"呉市吉浦の国道31号線沿いのコンビニエンスストア","location":{"type":"Point","coordinates":[132.5304138,34.2567817]},"name":"セブンイ レブン呉市吉浦店","openingHoursSpecification":{"opens":"00:00:00","closes":"23:59:00"},"refOffStreetParking":"urn:ngsi-ld:OffStreetParking:002","telephone":"+81823311458"}] PS C:\Users\owner> |
5.6.5.AttributeのValue指定のフィルタリング |
---|
2022-04-11/2023-11-12 |
||
typeでもidでもないAttributeのValueを指定する場合には、"q="で条件を指定します。例えば、既に示した例では、nameを条件に特定のStoreのEntityを検索しました。ご覧の様に、Valueを示す等号は"=="で記述します。 |
||
curl -G -X GET 'http://localhost:1026/v2/entities' -d 'type=Store' -d 'q=name==%e3%83%ad%e3%83%bc%e3%82%bd%e3%83%b3%e5%85%ab%e7%8e%8b%e5%ad%90%e9%95%b7%e6%b2%bc%e7%94%ba%e5%ba%97' -d 'options=keyValues' | ||
addressの様に構造を持Atributeの場合には、ピリオドを挟んで、"addoress.streetAddress"の様に指定します。例えば、長沼町202-5のStoreを検索するには、 |
||
curl -G -X GET 'http://localhost:1026/v2/entities' -d 'q=address.streetAddress==%e9%95%b7%e6%b2%bc%e7%94%ba%32%30%32%2d%35' -d 'options=keyValues' | ||
とすると、以下のようなレスポンスが返ります。 |
||
PS C:\Users\owner> curl -G -X GET 'http://localhost:1026/v2/entities' -d 'q=address.streetAddress==%e9%95%b7%e6%b2%bc%e7%94%ba%32%30%32%2d%35' -d 'options=keyValues' [{"id":"urn:ngsi-ld:Store:001","type":"Store","address":{"streetAddress":"長沼町202-5","addressLocality":"八王子市","addressRegion":"東京都","postalCode":"1920907"},"location":{"type":"Point","coordinates":[139.37158,35.64226]},"name":"ローソン八王子長沼町店"}] PS C:\Users\owner> |
||
尚、条件に指定する文字列が数字だけからなる文字列の場合、文字列をシングルクオートで囲む必要があります。その場合は、前記の'q=...'はシングルクォートではなく、ダブルクォートで囲んで"q=..."の様に記述しておく必要があります。例えば、StoreをpstalCodeで検索してみましょう。二回検索します。一回目はシングルクォートで囲まない場合、二回目がシングルクォートで囲む場合です。 |
||
curl -G -X GET 'http://localhost:1026/v2/entities' -d "q=address.postalCode==1920907" -d 'options=keyValues' curl -G -X GET 'http://localhost:1026/v2/entities' -d "q=address.postalCode=='1920907'" -d 'options=keyValues' |
||
すると、以下の様なレスポンスが返ります。 |
||
PS C:\Users\owner> curl -G -X GET 'http://localhost:1026/v2/entities' -d "q=address.postalCode==1920907" -d 'options=keyValues' [] PS C:\Users\owner> curl -G -X GET 'http://localhost:1026/v2/entities' -d "q=address.postalCode=='1920907'" -d 'options=keyValues' [{"id":"urn:ngsi-ld:Store:001","type":"Store","address":{"streetAddress":"長沼町202-5","addressLocality":"八王子市","addressRegion":"東京都","postalCode":"1920907"},"location":{"type":"Point","coordinates":[139.371578,35.642221]},"name":"ローソン八王子長沼町店"}] PS C:\Users\owner> |
||
この様に、数字だけからなる文字列は明示的にシングルクォートで囲って文字列としないと、正しく検索されません。 |
||
|
||
|
||
2022年4月11日 |
||
MetadataのValueも同様に指定した検索が可能です。この場合は"q="の代わりに"mq="を使用します。今までMetadataを使ったEntityは作成していませんでしたので、まずはStore003としてMetadataがあるEntityを作ってみましょう。この例では、locationのmetadataとして"typeOf"を作り、locationが指す位置の意味として"ParkingEntrance"を設定しました。 |
||
{ "id": "urn:ngsi-ld:Store:003", "type": "Store", "name": { "type": "Text", "value": "ファミリーマート日野北野街道店" }, "address": { "type": "PostalAddress", "value": { "streetAddress": "平山4-1-33", "addressLocality": "日野市", "addressRegion": "東京都", "postalCode": "1910043" } }, "openingHoursSpecification": { "type": "StructuredValue", "value": { "opens": "00:00:00", "closes": "23:59:00" } }, "location": { "type": "geo:json", "value": { "type": "Point", "coordinates": [ 139.38879540047748, 35.65005167131512 ] }, "metadata": { "typeOf": { "type": "Text", "value": "ParkingEntrance" } } }, "telephone": { "type": "Text", "value": "+81823311458" }, "category": { "type": "Text", "value": "ConvenienceStore" }, "description": { "type": "Text", "value": "日野市平山の北野街道沿いのコンビニエンスストア" } } |
||
これを"postStore003.json"に格納して、以下のコマンドで格納します。 |
||
curl -iX POST --header "Content-Type: application/json" -d @d:\postStore003.json http://localhost:1026/v2/entities | ||
これで準備が出来ましたので、metadata指定で読み出してみましょう。以下のコマンドを打ちます。 |
||
curl -G -X GET 'http://localhost:1026/v2/entities' -d 'type=Store' -d 'mq=location.typeOf==ParkingEntrance' -d 'options=keyValues' | ||
そうすると、以下の様にStore003だけが返却されます。 |
||
PS C:\Users\owner> curl -G -X GET 'http://localhost:1026/v2/entities' -d 'type=Store' -d 'mq=location.typeOf==ParkingEntrance' -d 'options=keyValues' [{"id":"urn:ngsi-ld:Store:003","type":"Store","address":{"streetAddress":"平山4-1-33","addressLocality":"日野市","addressRegion":"東京都","postalCode":"1910043"},"category":"ConvenienceStore","description":"日野市平山の北野街道沿いのコンビ ニエンスストア","location":{"type":"Point","coordinates":[139.3887954,35.650051671]},"name":"ファミリーマート日野北野街 道店","openingHoursSpecification":{"opens":"00:00:00","closes":"23:59:00"},"telephone":"+81823311458"}] PS C:\Users\owner> |
||