feat(mongodb): Add MongoDB Atlas Search filter #7387
                
     Draft
            
            
          
      
        
          +127
        
        
          −25
        
        
          
        
      
    
  
  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; }