特定の要素に特定の子要素がないことを満足するコレクション内のドキュメントを取得したいと思います。たとえば、以下の2つの「ドキュメント」から、要素の子があるのでdoc 2を選択しますが、ないのでdoc1を選択します。
Doc 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
このクエリは、子要素を持つドキュメントを正確に返します。
何が得られますか?