2017-01-10 6 views
1

Другим вопроса, моя структура документа:Couchbase n1ql соответствует ни одному из подразделов свойств документа дорожит

{ 
    "desktop": { 
    "default": { 
     "s": { 
     "camp": { 
      "100112": 0, 
      "100114": 0, 
      "100122": 0 
     }, 
     "score": 1 
     } 
    } 
    } 
} 

Я хочу, чтобы найти документ, в котором по крайней мере один из свойств лагеря больше 0. Я starrt что-то вроде:

select * from my_bucket t where ANY camp_id IN desktop.default.s.camp SATISFIES camp_id.value > 0 END

Но, конечно, это не работает :)

Любые подсказки?

Заранее благодарен!

ответ

1

Вы находитесь на правильном пути с использованием ANY ... IN ... SATISFIES статья.

Основная проблема с вашим запросом заключается в том, что в вашем временном объекте camp_id нет объекта value. Вместо этого вы можете использовать функцию OBJECT_VALUES (https://developer.couchbase.com/documentation/server/4.5/n1ql/n1ql-language-reference/objectfun.html), чтобы вытащить значения из опций camp и сравнить их напрямую.

Ваш запрос будет выглядеть следующим образом:

SELECT 
    * 
FROM my_bucket 
WHERE 
    ANY camp_val 
    IN OBJECT_VALUES(default.desktop.default.s.camp) 
    SATISFIES camp_val > 0 
END 
+0

Он работает как шарм TKS! – Kinesra