Я хочу получить документы в коллекции, которые удовлетворяют тому, что данный элемент не имеет определенного дочернего элемента. Например, из двух «документов», приведенных ниже, я хочу выбрать документ 2, поскольку он имеет дочерний элемент, но документ 1, поскольку его нет.
Документ 1 :
<doc>
<element>
<child/>
</element>
</doc>
doc2
<doc>
<element>
<other-child/>
</element>
</doc>
Я пытался сделать это:
for $item in collection('/db/collection')
where not($item//child)
return $item
Однако по какой-то причине это не работает. Я также пробовал различные комбинации exists
, функции последовательности и т. Д., Но не смог получить желаемый результат.
Чтобы прояснить, тест not($item//child)
, похоже, не делает то, что я думаю, что он будет делать. Приведенный выше запрос возвращает каждый документ в моей коллекции, имеет ли он элемент или нет.
Обратное работает, однако:
for $item in collection('/db/collection')
where $item//child
return $item
Этот запрос возвращает именно те документы, которые имеют дочерний элемент.
Что дает?