2016-03-31 59 views
1

我有以下数据阵列中的数据桶内在我的Couchbase服务器地盘N1QL查询来筛选Couchbase服务器JSON阵列

"siteMaster": [ 
       { 
        "sitename": "HTS_SITE_001", 
        "sitelink": "http://facebook.com", 
        "address" : "19/2, Bellandur, Bangalore India", 
        "filename": "site1.json", 
        "persons": 1, 
        "status": "70%", 
        "contact": "[email protected]", 
       }, { 
        "sitename": "HTS_SITE_002", 
        "sitelink": "http://facebook.com", 
        "address": "5th Avenue, New York", 
        "filename": "site2.json", 
        "persons": 1, 
        "status": "70%", 
        "contact": "[email protected]", 
       }, { 
        "sitename": "HTS_SITE_003", 
        "sitelink": "http://facebook.com", 
        "address": "Palo Alto, California", 
        "filename": "site3.json", 
        "persons": 1, 
        "status": "80%", 
        "contact": "[email protected]", 
       }, { 
        "sitename": "HTS_SITE_004", 
        "sitelink": "http://facebook.com", 
        "address": "Bellandur, Bangalore", 
        "filename": "site4.json", 
        "persons": 1, 
        "status": "80%", 
        "contact": "[email protected]", 
       } 
      ] 

的N1QL查询

SELECT * FROM网站, status =“70%”应该返回两行,但不幸的是它没有返回任何行。

我在哪里查询错误?

+0

请升级到Couchbase 4.1或4.5 DP。 – geraldss

+0

@geraldss它是4.5 –

回答

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); 
+0

有没有办法选择匹配到siteMaster的索引? –