1

CouchbaseサーバーのデータバケットSITES内に次のデータ配列があります

"siteMaster": [
                {
                    "sitename": "HTS_SITE_001",
                    "sitelink": "http://facebook.com",
                    "address" : "19/2, Bellandur, Bangalore India",
                    "filename": "site1.json",
                    "persons": 1,
                    "status": "70%",
                    "contact": "max.smith@honeywell.com",
                }, {
                    "sitename": "HTS_SITE_002",
                    "sitelink": "http://facebook.com",
                    "address": "5th Avenue, New York",
                    "filename": "site2.json",
                    "persons": 1,
                    "status": "70%",
                    "contact": "john.smith@facebook.com",
                }, {
                    "sitename": "HTS_SITE_003",
                    "sitelink": "http://facebook.com",
                    "address": "Palo Alto, California",
                    "filename": "site3.json",
                    "persons": 1,
                    "status": "80%",
                    "contact": "steve.jobs@apple.com",
                }, {
                    "sitename": "HTS_SITE_004",
                    "sitelink": "http://facebook.com",
                    "address": "Bellandur, Bangalore",
                    "filename": "site4.json",
                    "persons": 1,
                    "status": "80%",
                    "contact": "max.mustermann@deutsche.com",
                }
            ]

の N1QL クエリ

select * from SITES where status = "70%" は 2 行を返すはずですが、残念ながら行は返されません。

クエリのどこが間違っていますか?

4

1 に答える 1

1

次のクエリを使用してください。

SELECT *
FROM SITES
WHERE ANY sm IN siteMaster SATISFIES sm.status = "70%" END;

次の配列インデックスを作成して、クエリを高速化することもできます。

CREATE INDEX idx ON SITES( DISTINCT ARRAY sm.status FOR sm IN siteMaster END );
于 2016-04-01T05:49:18.997 に答える