Atlas Search
Overview
In this guide, you can learn how to use the Java driver to run Atlas Search queries on a collection. Atlas Search enables you to perform full-text searches on collections hosted on MongoDB Atlas. Atlas Search indexes specify the behavior of the search and which fields to index.
Sample Data
The examples in this guide use the movies
collection in the sample_mflix
database from the Atlas sample datasets. To learn how to
create a free MongoDB Atlas cluster and load the sample datasets, see the
Get Started with Atlas guide. To learn more about
aggregation operations and builders, see the Aggregation guide.
Run an Atlas Search Query
This section shows how to create an aggregation pipeline to run an
Atlas Search query on a collection. You can use the Aggregates.search()
builder
method to create a $search
pipeline stage, which specifies the search
criteria. Then, call the aggregate()
method and pass your pipeline as a
parameter.
Note
Only Available on Atlas for MongoDB v4.2 and later
This aggregation pipeline operator is only available for collections hosted on MongoDB Atlas clusters running v4.2 or later that are covered by an Atlas search index. Learn more about the required setup and the functionality of this operator from the Atlas Search documentation.
Before running an Atlas Search query, you must create an Atlas Search index on your collection. To learn how to programmatically create an Atlas Search index, see the Atlas Search and Vector Search Indexes section in the Indexes guide.
Atlas Search Example
This example runs an Atlas Search query by performing the following actions:
Constructs a
$search
stage by using theAggregates.search()
builder method, instructing the driver to query for documents in which thetitle
field contains the word"Alabama"
Constructs a
$project
stage by using theAggregates.project()
builder method, instructing the driver to include thetitle
field in the query resultsPasses the pipeline stages to the
aggregate()
method and prints the results
collection.aggregate( Arrays.asList( Aggregates.search(SearchOperator.text( SearchPath.fieldPath("title"), "Alabama")), Aggregates.project(Projections.include("title")) ) ).forEach(doc -> System.out.println(doc.toJson()));
{"_id": {"$oid": "..."}, "title": "Alabama Moon"} {"_id": {"$oid": "..."}, "title": "Crazy in Alabama"} {"_id": {"$oid": "..."}, "title": "Sweet Home Alabama"}
Tip
Java Driver Atlas Search Examples
To view more examples that use the Java driver to perform Atlas Search queries, see Atlas Search Tutorials in the Atlas documentation.
Atlas Search Metadata
Use the searchMeta()
method to create a $searchMeta pipeline stage, which returns
only the metadata from of the Atlas full-text search results.
Tip
Only Available on Atlas for MongoDB v4.4.11 and later
This aggregation pipeline operator is available only on MongoDB Atlas clusters running v4.4.11 and later. For a detailed list of version availability, see the MongoDB Atlas documentation on $searchMeta.
The following example shows the near
metadata for an Atlas search
aggregation stage:
Aggregates.searchMeta( SearchOperator.near(2010, 1, fieldPath("year")));
To learn more about this helper method, see the searchMeta() API documentation.
Create Pipeline Search Stages
Additional Information
To learn more about Atlas Search, see Atlas Search in the Atlas documentation.
API Documentation
To learn more about the methods mentioned in this guide, see the following API documentation: