Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Run Vector Search Queries

A MongoDB Vector Search query takes the form of an aggregation pipeline that uses $vectorSearch as the first stage. This page explains the syntax, options, and behavior of the $vectorSearch stage.

$vectorSearch

The $vectorSearch stage takes a document with the following fields:

When you define a $vectorSearch stage, you can use the exact field to specify whether to run an ANN or ENN search.

$vectorSearch must be the first stage of any pipeline where it appears.

$vectorSearch can't be used in view definition and the following pipeline stages:

  • $lookup sub-pipeline [1]

  • $facet pipeline stage

[1] You can pass the results of $vectorSearch to this stage.

To learn more about these MongoDB Vector Search field types, see How to Index Fields for Vector Search.

MongoDB Vector Search assigns a score, in a fixed range from 0 to 1 (where 0 indicates low similarity and 1 indicates high similarity), to every document that it returns.

Note

Pre-filtering your data doesn't affect the score that MongoDB Vector Search returns using vectorSearchScore for $vectorSearch queries.

Important

Filtered queries are typically slower than an otherwise equivalent unfiltered query.

  • MongoDB Vector Search supports the short form of $eq. In the short form, you don't need to specify $eq in the query.

    For example, consider the following filter with $eq:

    "filter": { "_id": { "$eq": ObjectId("5a9427648b0beebeb69537a5") }

    This is equivalent to the following filter, which uses the short form of $eq:

    "filter": { "_id": ObjectId("5a9427648b0beebeb69537a5") }
  • You can use the $and MQL operator to specify an array of filters in a single query.

    For example, consider the following pre-filter for documents with a genres field equal to Action and a year field with the value 1999, 2000, or 2001:

    "filter": {
    "$and": [
    { "genres": "Action" },
    { "year": { "$in": [ 1999, 2000, 2001 ] } }
    ]
    }
  • For advanced filtering capabilities such as fuzzy search, phrase matching, location filtering, and other analyzed text, use the vectorSearch operator in a $search stage.

Before you run these examples, perform the following actions:

  • Add the sample dataset used in the query to your cluster.

  • Create MongoDB Vector Search indexes for the collection. For instructions, see the Create a MongoDB Vector Search Index procedure and copy the configurations for the sample queries in your desired language.

Back

Index Reference

Earn a Skill Badge

Master "Vector Search Fundamentals" for free!

Learn more

On this page