1. フィルター

手動でのクエリの作成

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

警告

このアプローチを使用して JavaScript SDK でクエリを作成できます。これは、Web SDK でのクエリ作成には推奨できない方法であることに注意してください。Web SDK では、代わりに LINQ を使用してください。

クエリ オブジェクト

クエリ クライアントでは、クエリを定義する必要があります。クエリは、次のパラメーターをサポートしています。

パラメーター説明
Filter呼び出されるフィルターのタイプ。
Skipスキップするエンティティの数。
Take取得するエンティティの数。
LoadConfiguration適用する読み込み設定。
Sorting適用する並べ替えオプション。

IdQueryFilter

エンティティ ID でフィルタリングします。

単一の ID でクエリを実行するには、パラメーター「Value」を使用する必要があります。

import { IdQueryFilter } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/filters/id-query-filter";
import { ComparisonOperator } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/filters/comparison-operator";
import { Query } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/query";

var idQueryFilter = new IdQueryFilter({
value: entityId,
operator: ComparisonOperator.Equals
});

var query = new Query({
filter: idQueryFilter
});

複数の ID でフィルタリングするには、パラメーター「Values」を使用する必要があります。

var idQueryFilter = new IdQueryFilter({
values: [entityId],
operator: ComparisonOperator.Equals
});

サポートされている比較演算子は、次のとおりです。

  • Equals
  • NotEquals

演算子が指定されていない場合は、既定で Equals 比較演算子が使用されます。

DefinitionQueryFilter

エンティティ定義でフィルタリングすることができます。

単一のエンティティ定義名でフィルタリングするには、「Name」パラメーターを使用する必要があります。

import { DefinitionQueryFilter } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/filters/definition-query-filter";
import { ComparisonOperator } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/filters/comparison-operator";
import { Query } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/query";

var definitionQueryFilter = new DefinitionQueryFilter({ name: "M.Asset", operator: ComparisonOperator.Equals });

var query = new Query({
filter: definitionQueryFilter
});

複数のエンティティ定義名でフィルタリングするには、「Names」パラメーターを使用する必要があります。

var definitionQueryFilter = new DefinitionQueryFilter({ names: ["M.Asset", "M.Fragment"], operator: ComparisonOperator.Equals });

サポートされている比較演算子は、次のとおりです。

  • Equals
  • NotEquals

演算子が指定されていない場合は、既定で Equals 比較演算子が使用されます。

PropertyQueryFilter

1 つまたは複数のプロパティ値に基づいてエンティティをフィルタリングします。指定したデータ型によって、値の型と有効な比較演算子が決まります。

データ型文字列を使用してデータソースのプロパティでクエリを実行できることに注意してください。

単一の値でフィルタリングする場合は、「Value」パラメーターを使用する必要があります。

import { Query } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/query";
import { PropertyQueryFilter } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/filters/property-query-filter";
import { FilterDataType } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/filters/filter-data-type";
import { ComparisonOperator } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/filters/comparison-operator";

var propertyQueryFilter = new PropertyQueryFilter({
operator: ComparisonOperator.Equals,
property: "fileName",
value: "test.jpg",
dataType: FilterDataType.String
});

var query = new Query({
filter: propertyQueryFilter
});

「Values」パラメーターを使用して複数の値でフィルタリングすることもできます。それらの値は OR 演算子を使用していると解釈されます。すなわち、指定された値のいずれかに一致する、指定されたプロパティを持つエンティティが返されることになります。

var propertyQueryFilter = new PropertyQueryFilter({
operator: ComparisonOperator.Equals,
property: "fileName",
values: ["test.jpg", "test2.jpg"],
dataType: FilterDataType.String
});

「Culture」パラメーターを使用して、フィルタリングするカルチャを指定できます。これは多言語プロパティにのみ適用されます。

var propertyQueryFilter = new PropertyQueryFilter({
operator: ComparisonOperator.Equals,
property: "fileName",
value: "test.jpg",
dataType: FilterDataType.String,
culture: "en-US"
});

サポートされている比較演算子は、指定されたデータ型によって異なります。指定されたコンテキストで比較演算子が無効な場合は、例外がスローされます。

RelationQueryFilter

1 つまたは複数の親 ID を使用して、指定されたエンティティとのリレーションを持つエンティティをフィルタリングします。リレーションの名前は「Relation」パラメーターで指定する必要があります。

単一のリレーション エンティティでフィルタリングする場合は、「ParentId」パラメーターを指定する必要があります。

import { Query } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/query";
import { RelationQueryFilter } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/filters/relation-query-filter";

var relationQueryFilter  = new RelationQueryFilter ({
relation: "AssetTypeToAsset",
parentId: assetTypeId
});

var query = new Query({
filter: relationQueryFilter
});

「ParentIds」パラメーターを使用して、複数の親 ID を指定できます。それらの ID は OR 演算子を使用していると解釈されます。すなわち、指定された値のいずれかに一致する、指定されたプロパティを持つエンティティが返されることになります。

var relationQueryFilter  = new RelationQueryFilter ({
relation: "AssetTypeToAsset",
parentIds: [assetTypeId, assetTypeId2]
});

var query = new Query({
filter: relationQueryFilter
});

CreatedByQueryFilter

1 人または複数のユーザーによって作成されたエンティティをフィルタリングします。

「Id」プロパティまたは「Ids」プロパティのいずれかを使用して 1 つ以上の ID を指定すると、フィルターを適用できます。

import { Query } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/query";
import { CreatedByQueryFilter } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/filters/createdby-query-filter";
import { ComparisonOperator } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/filters/comparison-operator";

var createdByQueryFilter = new CreatedByQueryFilter({
id: userId,
operator: ComparisonOperator.Equals
});

var query = new Query({
filter: createdByQueryFilter
});

「Ids」パラメーターを使用して複数の ID を指定すると、指定されたユーザー ID のいずれかによって作成されたすべてのエンティティが返されます。

var createdByQueryFilter = new CreatedByQueryFilter({
ids: [userId, userId2],
operator: ComparisonOperator.Equals
});

「Username」または「Usernames」プロパティを使用して 1 つ以上のユーザー名を指定することもできます。

var createdByQueryFilter = new CreatedByQueryFilter({
username: "Administrator",
operator: ComparisonOperator.Equals
});

複数のユーザー名を指定すると、指定されたユーザーのいずれかによって作成されたエンティティが返されます。

var createdByQueryFilter = new CreatedByQueryFilter({
usernames: ["Administrator", "M.Demo.User"],
operator: ComparisonOperator.Equals
});

サポートされている比較演算子は、次のとおりです。

  • Equals
  • NotEquals

演算子が指定されていない場合は、既定で Equals 比較演算子が使用されます。

CompositeQueryFilter

「AND」結合演算子や「OR」結合演算子を使用して、さまざまなクエリ フィルターを組み合わせることができます。クエリ フィルターは、複合クエリ フィルターの「Children」パラメーターを使用して指定できます。結合メソッド演算子は、「CombineMethod」パラメーターを使用して指定できます。

import { Query } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/query";
import { PropertyQueryFilter } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/filters/property-query-filter";
import { FilterDataType } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/filters/filter-data-type";
import { ComparisonOperator } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/filters/comparison-operator";
import { DefinitionQueryFilter } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/filters/definition-query-filter";
import { CompositeQueryFilter } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/filters/composite-query-filter";
import { CompositeFilterOperator } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/filters/composite-filter-operator";

var definitionQueryFilter = new DefinitionQueryFilter({
names: ["M.Asset", "M.Fragment"],
operator: ComparisonOperator.Equals
});

var propertyQueryFilter = new PropertyQueryFilter({
operator: ComparisonOperator.Equals,
property: "fileName",
value: "test.jpg",
dataType: FilterDataType.String
});

var compositeQueryFilter = new CompositeQueryFilter({
children: [
definitionQueryFilter,
propertyQueryFilter
],
combineMethod: CompositeFilterOperator.Or
});

var query = new Query({
filter: compositeQueryFilter
});

クエリ読み込み設定

読み込み設定は、Query オブジェクトの LoadConfiguration で設定できます。

詳細については、読み込み設定を参照してください。

注意

古い SDK からの EntityLoadOptions は非推奨になりました。代わりに LoadConfiguration を使用してください。

この記事を改善するための提案がある場合は、 お知らせください!