Skip to content

bug(vector_stores/pinecone): '*' metadata filter is $eq-matched instead of field-exists #6652

Description

@Bartok9

Component

Python SDK — mem0/vector_stores/pinecone.py _create_filter

Summary

Mem0 metadata filtering documents {"key": "*"} as wildcard / field-exists. Pinecone's _create_filter always wraps scalars as {"$eq": value}, so "*" becomes a literal equality match for the string *, which never matches real payload values.

Other stores (pgvector, chroma, milvus, opensearch, …) special-case "*".

Repro

# unit-level
from mem0.vector_stores.pinecone import PineconeDB
# after constructing (or call _create_filter on an instance):
# filters={"user_id": "*"} → {"user_id": {"$eq": "*"}}  # wrong
# expected field-exists, e.g. {"user_id": {"$exists": True}}

Expected

"*" → Pinecone exists filter ($exists: true), consistent with docs / other providers (see #6539 family).

Actual

Literal $eq on "*".

Metadata

Metadata

Assignees

No one assigned

    Labels

    sdk-pythonPython SDK specificvector-storeVector store backends (Qdrant, PGVector, Redis, etc.)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions