Query Index in NoSQL
Catalyst enables you to query a NoSQL index and retrieve data by identifying the items using the primary keys of the index. Indexing allows you to execute alternate queries on the table data without making use of the primary keys of the main table. You can configure indexes from the Catalyst console. You can use just the partition key or a combination of the partition key and sort key of the index to retrieve an item.
You can define the key condition that identifies the item by specifying the attributes, their required values, and the supported operator to be used. The supported operators are represented as shown below.
Operators | Notation |
---|---|
CONTAINS | contains |
NOT_CONTAINS | not_contains |
BEGINS_WITH | begins_with |
ENDS_WITH | ends_with |
IN | in |
NOT_IN | not_in |
BETWEEN | between |
NOT_BETWEEN | not_between |
EQUALS | equals |
NOT_EQUALS | not_equals |
GREATER_THAN | greater_than |
LESS_THAN | less_than |
GREATER_THAN_OR_EQUALS | greater_equal |
LESSER_THAN_OR_EQUALS | less_equal |
AND | AND |
OR | OR |
In the example below, the query is executed by identifying the items using the index FruitIdentifier ’s partition key fruitColor and specifying the condition value as “yellow”. The query is done using the queryIndex() method.
Catalyst NoSQL also lets you define other elements of the query, such as using consistent_read to indicate if the read operation must be done using the master or a slave cluster, limiting the number of rows to be returned, and specifying the sorting order as ascending.
The no-sql library from the zcatalyst-sdk-node package is required to define the NoSQL item.
copyconst { NoSQLMarshall, NoSQLEnum } = require('zcatalyst-sdk-node/lib/no-sql'); const { NoSQLOperator } = NoSQLEnum; //Query a NoSQL table index to fetch the items identified by the partition key fruitColour with the value "yellow" const queriedIndexItems = await table.queryIndex('FruitIdentifier', { //Define the key condition to query the items with key_condition: { attribute: 'fruitColor', //Define the supported operator to be used operator: NoSQLOperator.EQUALS, value: NoSQLMarshall.makeString('yellow') }, // Set consistent_read to true to query from master. If set to false, it is queried from slave. consistent_read: true, //Limit the number of rows to be returned by specifying a value limit: 15, // Set forward_scan to true to sort the results in ascending order. Otherwise, it is sorted in the descending order. forward_scan: true });
Last Updated 2025-06-20 16:21:48 +0530 +0530
Yes
No
Send your feedback to us