開発_ CMIS Query - aegif/NemakiWare GitHub Wiki

English/日本語


概要

  • ドキュメントやフォルダを検索するには、CMIS Queryという記法でクエリ文を書いてメソッドに渡します。
  • CMIS QueryはSQL-92をベースにしたもので、CMIS独自の拡張や制約があります。
  • 使える記法には、SELECT、FROM、WHERE、ORDER BYなどがあります。
  • JOIN、GROUP BY、HAVINGなどは使えません。

クエリを自分で書いて挙動を試してみたければ、CMIS Workbenchを利用すると簡単です。CMIS Workbench の Query タブからクエリを実行することが出来ます。

サンプル

以下に簡単なサンプルを示します。

すべてのドキュメントを取得します。

SELECT * FROM cmis:document

すべてのフォルダを取得します。

SELECT * FROM cmis:folder

特定のプロパティのみを取得します。

SELECT cmis:name, cmis:objectId FROM cmis:document

エイリアスも使えます。

SELECT
   F.cmis:name AS name
 , F.cmis:objectId AS id
FROM 
  cmis:folder AS F

WHERE句を使った例

SELECT * FROM cmis:document WHERE cmis:objectId = 'f4970bc7faffc7295d44b25fb105ca88'
SELECT * FROM cmis:document WHERE cmis:name LIKE  '%サンプル%'
SELECT * FROM cmis:document WHERE cmis:description IS NULL
SELECT * FROM cmis:document WHERE cmis:versionLabel IN ('1.1', '2.0')

特殊な構文として WHERE 句の中で IN_FOLDER と IN_TREE が使えます。 WHERE句で IN_FOLDER('folderのobjectId') を使うと、指定したフォルダ内を検索します。

SELECT * FROM cmis:document WHERE IN_FOLDER('b11bf1bf25317a8fa2941b8f140148b6')

WHERE句で IN_TREE('folderのobjectId') を使うと、指定したフォルダ以下を再帰的に検索します。

SELECT * FROM cmis:document WHERE IN_TREE('b11bf1bf25317a8fa2941b8f140148b6') 

ORDER BY による並べ替えは使用できます。GROUP BY や HAVING は使用できません。以下は、登録日順にソートして、ドキュメントをすべて取得します。

SELECT * FROM cmis:document  ORDER BY cmis:creationDate