2017-01-13 5 views
2

Я хочу искать документы из консоли запроса на основе некоторого свойства, которое не является нулевым. Допустим, это документы json, которые у меня есть.Не пустое значение свойства поиск в marklogic

{ "a1": "1234", "a2": "а", "a3": нулевой, "a4": "MnO"}

{ "a1": "1235", "a2": "XYZ", "a3": "значение", "a4": "MnO"}

Я могу запросить документы на основе собственности, как этот

cts:search(fn:collection(), cts:json-property-value-query("a3","value")); 

Я не могу для использования не равен логическому оператору с этим запросом. Может ли кто-нибудь сообщить мне, если мне нужно искать документы на основе свойства a3, который не является нулевым, то каков должен быть запрос?

ответ

3

Используя только ценностные вопросы, я хотел бы сделать это следующим образом:

cts:search(fn:collection(), cts:and-query(
      (
      cts:json-property-value-query("a3", "*", "wildcarded"), 
      cts:not-query(cts:json-property-value-query("a3", json:null())) 
      ) 
      ) 
    ); 

я мог повлиять это с меньшим запросом, используя слово-запрос вместо запроса значения.

Обратите внимание, что использование подстановочного запроса состояло в том, чтобы изолировать документы-кандидаты, у которых был элемент «a3». Для XML я бы использовал элемент-запрос, чтобы убедиться, что у меня есть элемент, но я не знаю, как это сделать прямо в json.

+0

Спасибо, Дэвид, это сработало. – RCS

+0

Что будет эквивалент этого запроса с использованием ServerSide JavaScript? – Tamas

+0

У меня нет ответа, но я бы подумал, что построитель запросов должен иметь возможность построить выше. Примечание. Это новый вопрос и будет потерян в комментариях. Я предлагаю вам открыть новый билет и задать вопрос. –

Смежные вопросы