# Weaviate Features and Practical Usage
🚀 Need to pull every object, vectors included, for a migration or audit export? Stop fighting deep pagination. Weaviate's Cursor API walks the entire collection in order with no offset limit.
📌 Title and Feature URL
Title: Read all objects
URL:
📝 Overview
Weaviate's iterator() method traverses an entire collection efficiently while avoiding the performance penalties of traditional offset-based pagination. Internally it uses a cursor based on the after operator, sidestepping the deep pagination problem. For any full-collection processing, using the cursor is the rule.
🔧 How It Works
- limit/offset deep pagination slows down dramatically as the number of skipped records grows, which becomes critical at scale.
- The cursor uses an after parameter to continue from where it left off, avoiding that slowdown.
- The Python client wraps this as an Iterator, so a simple for loop walks all objects.
- By default it returns all properties and UUIDs, excluding blob and reference properties.
- Result ordering is not guaranteed; this is a mechanism for systematic full-collection access.
🛠 Practical Usage
- Basic form: collection = client.collections.use("WineReview"), then for item in collection.iterator(): to walk every object, reading item.uuid and
- To include vectors: for item in collection.iterator(include_vector=True): and read item.vector.
- For named vectors, pass include_vector=['title', 'body'] or True for all vectors.
- For multi-tenant collections, iterate per tenant with with_tenant(tenant_name).iterator(); get the tenant list via tenants.get().
🎯 Use Cases
- Migrate to another cluster by pulling vectors and properties together, then writing them back.
- Export an entire collection for audit and compliance.
- Access all objects sequentially for reindexing or batch processing.
- In multi-tenant setups, walk each tenant's full set for inventory/reconciliation.
⚠️ Caveats
- Result ordering is not guaranteed; do not build order-dependent logic on it.
- The cursor is built for systematic full-collection access, not random queries.
- include_vector=True increases data transfer for the vectors; enable it only when needed.
- You cannot iterate all tenants at once; run the iterator per tenant in multi-tenant collections.
#
Weaviate# #
VectorDatabase#