> Portal Navigation: > > - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version. > - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages). > - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`). > - Top-level index of all portals: https://dev.wix.com/docs/llms.txt > - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt # Resource: Items # Type: WixDataQuery # Action: distinct # Link: https://dev.wix.com/docs/sdk/business-solutions/data/items/wix-data-query/distinct.md ## Description: Returns the distinct values that match the query, without duplicates. The `distinct()` method returns a Promise that resolves to: - The distinct values found in the specified field when running the query. - Additional information about the results, such as the number of values that match the query. Unlike `find()`, which returns all item objects that match the query, `distinct()` returns matching field values, and eliminates duplicate field values from the query result. You cannot use `find()` and `distinct()` together. For an item to be resolved as distinct, only the specified field must be distinct. Other fields for that item in the collection are not evaluated when resolving the promise. The Promise is rejected if `distinct()` is called with incorrect permissions or if any of the methods used to refine the query is invalid. >**Note:** Only site visitors with [Data Read](https://support.wix.com/en/article/collection-permissions-an-overview#permissions) permissions can retrieve and view data. You can override the permissions by calling this method with [elevated permissions](https://dev.wix.com/docs/sdk/articles/work-with-the-sdk/about-elevated-permissions.md). ## Schema: ```json Method: distinct(field, options) Description: Returns the distinct values that match the query, without duplicates. The `distinct()` method returns a Promise that resolves to: - The distinct values found in the specified field when running the query. - Additional information about the results, such as the number of values that match the query. Unlike `find()`, which returns all item objects that match the query, `distinct()` returns matching field values, and eliminates duplicate field values from the query result. You cannot use `find()` and `distinct()` together. For an item to be resolved as distinct, only the specified field must be distinct. Other fields for that item in the collection are not evaluated when resolving the promise. The Promise is rejected if `distinct()` is called with incorrect permissions or if any of the methods used to refine the query is invalid. >**Note:** Only site visitors with [Data Read](https://support.wix.com/en/article/collection-permissions-an-overview#permissions) permissions can retrieve and view data. You can override the permissions by calling this method with [elevated permissions](https://dev.wix.com/docs/sdk/articles/work-with-the-sdk/about-elevated-permissions.md). Method parameters: param name: field | type: string | description: Field whose value is compared for distinct values. param name: options | type: WixDataQueryOptions | description: Configuration options for building the query. - name: appOptions | type: Record | description: Options for [querying Wix app collections](https://dev.wix.com/docs/develop-websites/articles/wix-apps/wix-app-collections/querying-wix-app-collections.md). - name: consistentRead | type: boolean | description: When `true`, reads data from the primary database instance. This decreases performance but ensures data retrieved is up-to-date even immediately after an update. Learn more about [Wix Data and eventual consistency](https://dev.wix.com/docs/sdk/backend-modules/data/eventual-consistency.md). - name: language | type: string | description: Language to translate result text into, in [IETF BCP 47 language tag](https://en.wikipedia.org/wiki/IETF_language_tag) format. If provided, the result text is returned in the specified language. If not provided, the result text is not translated. > **Note:** Translation for the specified language must be enabled for the collection in [Wix Multilingual](https://www.wix.com/app-market/wix-multilingual). - name: returnTotalCount | type: boolean | description: When `true`, the query results include a `totalCount` and `totalPages` properties containing the totals of items matching query. Requesting total count slows down the query. Default: `false` - name: showDrafts | type: boolean | description: When `true`, operations include draft items. Read operations include draft items in their response, and write operations modify draft items. Default: `false`. - name: suppressHooks | type: boolean | description: Prevents hooks from running for the operation. Can only be used in the [backend code of a Wix site](https://dev.wix.com/docs/develop-websites/articles/coding-with-velo/backend-code/about-the-site-backend.md). Default: `false`. Return type: PROMISE - name: currentPage | type: number | description: Returns the index of the current results page number. The `currentPage` is a zero-based index of the current page of results. The page size is defined by the `limit()` method, can be retrieved using the `pageSize` property, and navigating through pages is done with the `prev()` and `next()` methods. The `currentPage` property returns `undefined` if the query returned no results. - name: items | type: Array | description: Returns the items that match the query. The current page of items retrieved by the query. The page size is defined by the `limit()` method, can be retrieved using the `pageSize` property, and navigating through pages is done with the `prev()` and `next()` methods. When no items match the query, the `items` array is empty. - name: length | type: number | description: Returns the number of items in the current results page. The page size is defined by the `limit()` method, can be retrieved using the `pageSize` property, and navigating through pages is done with the `prev()` and `next()` methods. - name: pageSize | type: number | description: Returns the query page size. The page size is defined by the `limit()` method, can be retrieved using the `pageSize` property, and navigating through pages is done with the `prev()` and `next()` methods. - name: totalCount | type: number | description: Returns the total number of items that match the query. The `totalCount` returns the total number of items that match the query, not just the number of items in the current page. > **Note:** This property is only available when the query's `options.returnTotalCount` parameter is set to `true`. - name: totalPages | type: number | description: Returns the total number of pages the query produced. The page size is defined by the `limit()` method, can be retrieved using the `pageSize` property, and navigating through pages is done with the `prev()` and `next()` methods. > **Note:** This property is only available when the query's `options.returnTotalCount` parameter is set to `true`. Method: hasNext() Description: Indicates if the query has more results. Return type: PRIMITIVE Method: hasPrev() Description: Indicates the query has previous results. Return type: PRIMITIVE Method: next() Description: Retrieves the next page of query results. The `next()` method retrieves the next page of query results. The page size is defined by the `limit()` method, can be retrieved using the `pageSize` property, and navigating through pages is done with the `prev()` and `next()` methods. If items are added or removed between calls to `next()` the values returned may change. >**Note:** The `next()` method is not supported for [single-item collections](https://support.wix.com/en/article/cms-adding-and-setting-up-a-single-item-collection). Return type: PROMISE Method: prev() Description: Retrieves the previous page of query results. The `prev()` method retrieves the previous page of query results. The page size is defined by the `limit()` method, can be retrieved using the `pageSize` property, and navigating through pages is done with the `prev()` and `next()` methods. If items are added or removed between calls to `prev()` the values returned may change. >**Note:** The `prev()` method is not supported for [single-item collections](https://support.wix.com/en/article/cms-adding-and-setting-up-a-single-item-collection). Return type: PROMISE ```