feat(mongodb): Add MongoDB Atlas Search filter #7387
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a work in progress
The MongoDB
$searchaggregation uses a Lucene-based index for full-text search. This stage must be the first of the aggregation pipeline.This is different form the existing ODM
SearchFilterwhich uses the standard query operators.Todo:
sortin the$searchstagelimitin the$searchstageUsage
#[ApiResource( shortName: 'products', operations: [ new GetCollection( parameters: [ 'name' => new QueryParameter( schema: ['type' => 'string', 'default' => null], filter: new AtlasSearchFilter( index: 'search_index', operator: 'text', term: 'must' ), ), 'description' => new QueryParameter( schema: ['type' => 'string', 'default' => null], filter: new AtlasSearchFilter( index: 'search_index', operator: 'text', term: 'should', ), ), 'search' => new QueryParameter( schema: ['type' => 'string', 'default' => null], filter: new AtlasSearchFilter( index: 'search_index', operator: 'queryString', term: 'must', ), property: 'name', ), ] ), ] )] #[MongoDB\Document(collection: 'products')] #[MongoDB\SearchIndex(name: 'search_index', dynamic: true)] class Product { #[MongoDB\Id] public string $id; #[MongoDB\Field] public ?string $name; #[MongoDB\Field] public ?string $description; #[MongoDB\Field] public ?string $brand; }