---
title: "Basic"
description: "Learn basic read-only queries and how to use query policies for record filtering in the Aerospike Python client."
---

# Basic

> For the complete documentation index see: [llms.txt](https://aerospike.com/docs/llms.txt)
> 
> All documentation pages available in markdown.

This page describes basic queries and how to create a new query policy.

## Basic queries

Basic queries are read-only queries that return records to the client. A client application makes an API request to start a read-only query. This request in turn initiates parallel requests to each node in the cluster. The result returns the current version of each record to the client.

## Policies

The concept of short and long queries was introduced in Database 6.0. See [Differences between short and long queries](https://aerospike.com/docs/develop/learn/queries#differences-between-short-and-long-queries) for more information.

Query policies can be passed on a per-request basis. Policy values can be set to create a [filter expression](https://aerospike.com/docs/develop/expressions/#record-filtering-with-expressions), to determine whether bin data is included with the response, identify a short versus long query, and more.

::: note
Unless supported by query policies, basic queries are not supported on prefer-rack namespaces.
:::

The following example creates a new query policy that defines a [record filter expression](https://aerospike.com/docs/develop/expressions/#record-filtering-with-expressions)s that compares the length of the `shape` list in the `report` map and returns `true` if greater than `2`.

```python
# Build the expression

expr = exp.GT(

    exp.ListSize(

        None,

        exp.MapGetByKey(

            None,

            aerospike.MAP_RETURN_VALUE,

            exp.ResultType.LIST,

            'shape',

            exp.MapBin('report')

        )

    ),

    2).compile()

# Create the policy

query_policy = {'expressions': expr}
```