Как искать нулевое значение, используя индекс диапазона пути?

Я определил индекс диапазона пути для поля, и может случиться, что значение поля будет нулевым. Объект, хранящийся в Marklogic, похож на:

{"the": {"path": {"to": {"field": null}}}}

Я пробовал запрос

cts:path-range-query("/the/path/to/field", "=", json:null())

и это не возвращает никакого результата. Если вместо этого я определяю новое значение, когда поле имеет значение NULL, и создаю индекс только для этого случая, результаты поиска возвращаются.

Новый документ:

{"the": {"path": {"to": {"field": null, "fieldIsNull": true}}}}

Новый запрос:

cts: path-range-query ("/ the / path / to / fieldIsNull", "=", "true")

Как я могу искать нулевые значения, используя индекс диапазона пути, не прибегая к новому индексу?

Я использую Marklogic 9.0-4.

2 ответа

Вы можете использовать что-то вроде этого в JavaScript на стороне сервера:

cts.jsonPropertyValueQuery("field", null)

Который написан так в XQuery:

cts:json-property-value-query("Output", null-node {})

Вы пытались заменить json:null() с null-node{} в вашем запросе диапазона пути?

НТН!

На мой взгляд, именно здесь MarkLogic действительно провалил внедрение JSON. XQuery и XML не имеют значений NULL, и на самом деле значения NULL представляют собой огромную проблему, от которой можно полностью избавиться при использовании XML и XQuery. Но теперь у вас есть не только фактические значения NULL, но и тип NullNode. Это дает вам такое аномальное поведение:

      let b=null
b ? 'true' : 'false'  // returns false 

let a=new NullNode()
a ? 'true' : 'false'  // returns true

Это значительно усложняет работу с данными, содержащими «null», как если бы это не было проблемой с самого начала!

Другие вопросы по тегам