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

MongoDB búsqueda

En esta guía puede aprender cómo utilizar el Search constructor para crear una etapa de la cadena de agregación $search con el driver de MongoDB .NET/C#.

Para obtener más información sobre la etapa de la pipeline $search, consulta $busqueda.

Nota

Solo disponible en Atlas for MongoDB v4.2 y posteriores

El operador $search pipeline de agregación sólo está disponible para colecciones hospedadas en MongoDB Atlas con clústeres que ejecutan MongoDB v4.2 o posterior y que estén cubiertos por un índice de MongoDB Search. Para obtener más información sobre la configuración necesaria y la funcionalidad de este operador, consulta la documentación de MongoDB Search.

Los ejemplos de esta guía utilizan la colección movies de la base de datos sample_mflix. Los documentos de esta colección contienen información sobre películas, incluyendo sus títulos, tramas, género y valoraciones. La siguiente Movie clase modela los documentos de esta colección:

[BsonIgnoreExtraElements]
public class Movie
{
[BsonId]
public ObjectId Id { get; set; }
public string Title { get; set; } = null!;
public string Plot { get; set; } = null!;
public string[] Genres { get; set; } = null!;
public int Year { get; set; }
public string Rated { get; set; } = null!;
public Imdb Imdb { get; set; } = null!;
[BsonElement("plot_embedding")]
public float[] PlotEmbedding { get; set; } = null!;
public double Score { get; set; }
[BsonElement("scoreDetails")]
[BsonIgnoreIfNull]
public SearchScoreDetails ScoreDetails { get; set; } = null!;
[BsonElement("paginationToken")]
public string PaginationToken { get; set; } = null!;
}

La clase Movie referencia la siguiente clase Imdb, que modela el campo anidado imdb en cada documento:

[BsonIgnoreExtraElements]
public class Imdb
{
public double Rating { get; set; }
public int Votes { get; set; }
public int Id { get; set; }
}

Nota

Camel-Case en los nombres de campo en datos de muestra

Los documentos de la colección movies utilizan la convención de nomenclatura camel case. En los ejemplos de esta guía, se utiliza un ConventionPack para deserializar los campos de la colección en notación Pascal y asignarlos a las propiedades de la clase Movie.

Para obtener más información sobre la serialización personalizada, consulta Serialización personalizada.

Algunos ejemplos en esta guía utilizan colecciones adicionales y clases de modelos, que las secciones relevantes introducen. Todas las colecciones provienen de los conjuntos de datos de muestra proporcionados por Atlas. Consulta Inicio Rápido para aprender a crear un clúster gratuito de MongoDB y cargar estos datos de muestra.

Antes de poder realizar una búsqueda en una colección de Atlas, primero debes crear un índice de búsqueda de Atlas en la colección. Un índice de MongoDB Search es una estructura de datos que categoriza la información en un formato buscable.

Para aprender a crear un índice de búsqueda de MongoDB, consulta la guía de Atlas Crear un índice de búsqueda de MongoDB.

La clase Search contiene métodos que puedes usar para realizar operaciones $search. Para obtener una lista completa de los operadores $search disponibles, consulta la guía de Atlas Operadores y recolectores.

Utiliza el método Autocomplete() para buscar una palabra o frase que contenga una secuencia de caracteres de una string de entrada incompleta.

El siguiente ejemplo realiza una consulta de autocompletado en el campo title para texto que comienza con la string "Gravity":

var result = moviesCollection.Aggregate()
.Search(Builders<Movie>.Search.Autocomplete(m => m.Title, "Gravity"), indexName: "movietitles")
.ToList();
...
{ "_id" : ObjectId("..."), "title" : "Gravity", "plot" : "...", "genres" : ["Drama", "Sci-Fi", "Thriller"], "year" : 2013, "rated" : "PG-13", "imdb" : { "rating" : 7.7, "votes" : "...", "id" : "..." } }
...

Nota

Índice para consultas de autocompletado

Debes crear un índice de MongoDB Search que permita completar automáticamente las queries. Para obtener más información, consulta Cómo indexar campos para autocompletar en la documentación de Atlas.

Después de crear el índice de MongoDB Search, debes pasar el nombre del índice al método Autocomplete(), tal como se muestra en el ejemplo anterior.

Para obtener más información sobre el operador autocomplete, consulta la guía de Atlas de autocompletado.

Utilice el método Compound() para combinar dos o más operadores en una sola búsqueda.

The following example searches the movies collection for any documents that match all of the following criteria:

  • El campo imdb.rating existe en el documento

  • El valor del campo rated no es "G"

  • El campo year tiene un valor mayor que 2000

var result = moviesCollection.Aggregate()
.Search(Builders<Movie>.Search.Compound()
.Must(Builders<Movie>.Search.Exists(m => m.Imdb.Rating))
.MustNot(Builders<Movie>.Search.Equals(m => m.Rated, "G"))
.Must(Builders<Movie>.Search.Range(m => m.Year, SearchRangeBuilder.Gt(2000))))
.ToList();
...
{ "_id" : ObjectId("..."), "title" : "The Dark Knight", "plot" : "...", "genres" : ["Action", "Crime", "Drama"], "year" : 2008, "rated" : "PG-13", "imdb" : { "rating" : 9.0, "votes" : "...", "id" : "..." } }
{ "_id" : ObjectId("..."), "title" : "Inception", "plot" : "...", "genres" : ["Action", "Adventure", "Sci-Fi"], "year" : 2010, "rated" : "PG-13", "imdb" : { "rating" : 8.8, "votes" : "...", "id" : "..." } }
...

Para obtener más información sobre el operador compound, consulta la guía compound de Atlas.

Utiliza el método EmbeddedDocument() para realizar operaciones de búsqueda en documentos dentro del valor de un campo tipo arreglo.

Nota

Para buscar en los documentos incrustados, debe crear un embeddedDocument índice en el campo de arreglo.

Para aprender cómo definir un índice de embeddedDocument, consulta Definir el índice del tipo embeddedDocument en la documentación de Atlas.

Este ejemplo utiliza la colección restaurants de la base de datos sample_restaurants. Las siguientes clases modelan los documentos en esa colección:

[BsonIgnoreExtraElements]
public class Restaurant
{
[BsonId]
public ObjectId Id { get; set; }
public string Name { get; set; } = null!;
public string Cuisine { get; set; } = null!;
public string Borough { get; set; } = null!;
public List<GradeEntry> Grades { get; set; } = null!;
}
[BsonIgnoreExtraElements]
public class GradeEntry
{
public string Grade { get; set; } = null!;
public int? Score { get; set; }
}

El siguiente ejemplo busca en esa colección cualquier restaurante cuyo arreglo grades contenga una entrada con un valor de campo grade igual a "A":

var result = restaurantsCollection.Aggregate()
.Search(Builders<Restaurant>.Search.EmbeddedDocument(
r => r.Grades,
Builders<GradeEntry>.Search.Equals(g => g.Grade, "A")
), indexName: "restaurantsembedded").ToList();
...
{ "_id" : ObjectId("..."), "name" : "Riviera Caterer", "cuisine" : "American", "borough" : "Brooklyn", "grades" : [{ "grade" : "A", "score" : 5 }, { "grade" : "B", "score" : 23 }] }
...

Para obtener más información sobre el operador embeddedDocument, consulta la guía de Atlas embeddedDocument.

Utiliza el método Equals() para comprobar si un campo coincide con un valor especificado.

El siguiente ejemplo busca en la colección movies cualquier documento en el que el valor del campo year sea 2000:

var result = moviesCollection.Aggregate()
.Search(Builders<Movie>.Search.Equals(m => m.Year, 2000))
.ToList();
...
{ "_id" : ObjectId("..."), "title" : "Gladiator", "plot" : "...", "genres" : ["Action", "Adventure", "Drama"], "year" : 2000, "rated" : "R", "imdb" : { "rating" : 8.5, "votes" : "...", "id" : "..." } }
{ "_id" : ObjectId("..."), "title" : "Cast Away", "plot" : "...", "genres" : ["Adventure", "Drama", "Romance"], "year" : 2000, "rated" : "PG-13", "imdb" : { "rating" : 7.8, "votes" : "...", "id" : "..." } }
...

Para obtener más información sobre el operador equals, consulte la equals guía de Atlas.

Utiliza el método Exists() para buscar documentos en los que exista un nombre de campo indexado especificado. Si el campo especificado existe pero no está indexado, el documento no se incluye en el conjunto de resultados.

El siguiente ejemplo busca en la colección movies cualquier documento en el que exista el campo imdb.rating:

var result = moviesCollection.Aggregate()
.Search(Builders<Movie>.Search.Exists(m => m.Imdb.Rating))
.ToList();
...
{ "_id" : ObjectId("..."), "title" : "The Godfather", "plot" : "...", "genres" : ["Crime", "Drama"], "year" : 1972, "rated" : "R", "imdb" : { "rating" : 9.2, "votes" : "...", "id" : "..." } }
{ "_id" : ObjectId("..."), "title" : "The Shawshank Redemption", "plot" : "...", "genres" : ["Drama"], "year" : 1994, "rated" : "R", "imdb" : { "rating" : 9.3, "votes" : "...", "id" : "..." } }
...

Para obtener más información sobre el operador exists, consulta la guía de Atlas exists.

Utiliza el método GeoShape() para buscar documentos en relación con una geometría determinada. Al especificar las coordenadas para buscar, se debe indicar la longitud primero, seguida de la latitud. Los valores de longitud pueden estar entre -180 y 180, inclusive. Los valores de latitud pueden estar entre -90 y 90, inclusive.

Nota

MongoDB Search no admite lo siguiente:

  • Sistema de referencia de coordenadas (CRS) no por defecto

  • Sistema de coordenadas XY plano (2 dimensiones)

  • Notación de pares de coordenadas Punto (nombre del campo del punto: [12, 34])

Este ejemplo utiliza la colección theaters de la base de datos sample_mflix. Las siguientes clases modelan los documentos en esa colección:

[BsonIgnoreExtraElements]
public class Theater
{
[BsonId]
public ObjectId Id { get; set; }
public int TheaterId { get; set; }
public TheaterLocation Location { get; set; } = null!;
}
[BsonIgnoreExtraElements]
public class TheaterLocation
{
[BsonElement("geo")]
public GeoJsonPoint<GeoJson2DGeographicCoordinates> Geo { get; set; } = null!;
}

El siguiente ejemplo busca en esa colección todos los documentos en los que las coordenadas en el campo location.geo se intersecan con un polígono especificado en el área de Minneapolis, MN:

GeoJsonPolygon<GeoJson2DGeographicCoordinates> searchArea = new(new(new(new GeoJson2DGeographicCoordinates[]
{
new(-93.5, 44.7),
new(-93.5, 45.0),
new(-93.0, 45.0),
new(-93.0, 44.7),
new(-93.5, 44.7),
})));
var result = theatersCollection.Aggregate()
.Search(Builders<Theater>.Search.GeoShape(
t => t.Location.Geo, GeoShapeRelation.Intersects, searchArea),
indexName: "theatersgeo")
.ToList();
...
{ "_id" : ObjectId("..."), "theaterId" : 1000, "location" : { "geo" : { "type" : "Point", "coordinates" : [-93.24565, 44.85466] } } }
...

Para aprender más sobre el operador de geoShape , se puede consultar la guía de geoShape de Atlas.

Utiliza el método GeoWithin() para buscar documentos en los que las coordenadas de su campo GeoJSON especificado se encuentren dentro de una geometría dada. Puede buscar puntos que estén dentro de un:

  • Círculo

  • Cuadro delimitador

  • polígono

Al especificar las coordenadas para la búsqueda, se debe indicar primero la longitud, seguida de la latitud. Los valores de longitud pueden estar entre -180 y 180, ambos inclusive. Los valores de latitud pueden estar entre -90 y 90, inclusives.

Nota

MongoDB Search no admite lo siguiente:

  • Sistema de referencia de coordenadas (CRS) no por defecto

  • Sistema de coordenadas XY plano (2 dimensiones)

  • Notación de pares de coordenadas Punto (nombre del campo del punto: [12, 34])

El siguiente ejemplo busca en la colección theaters todos los documentos en los que las coordenadas en el campo location.geo se encuentran dentro de un polígono especificado:

GeoJsonPolygon<GeoJson2DGeographicCoordinates> searchArea = new(new(new(new GeoJson2DGeographicCoordinates[]
{
new(-94.0, 44.5),
new(-94.0, 45.2),
new(-92.5, 45.2),
new(-92.5, 44.5),
new(-94.0, 44.5),
})));
var result = theatersCollection.Aggregate()
.Search(Builders<Theater>.Search.GeoWithin(t => t.Location.Geo, searchArea),
indexName: "theatersgeo")
.ToList();
...
{ "_id" : ObjectId("..."), "theaterId" : 1000, "location" : { "geo" : { "type" : "Point", "coordinates" : [-93.24565, 44.85466] } } }
...

Para obtener más información sobre el operador geoWithin, consulta la guía de Atlas sobre geoWithin.

Usa el método In() para buscar documentos cuyos valores de campo coincidan con una lista de valores especificados.

El siguiente ejemplo busca en la colección movies documentos que tengan un arreglo genres que contenga "Action" o "Comedy":

var result = moviesCollection.Aggregate()
.Search(Builders<Movie>.Search.In(m => m.Genres, new[] { "Action", "Comedy" }))
.ToList();
...
{ "_id" : ObjectId("..."), "title" : "Home Alone", "plot" : "...", "genres" : ["Comedy", "Family"], "year" : 1990, "rated" : "PG", "imdb" : { "rating" : 7.4, "votes" : "...", "id" : "..." } }
{ "_id" : ObjectId("..."), "title" : "Die Hard", "plot" : "...", "genres" : ["Action", "Thriller"], "year" : 1988, "rated" : "R", "imdb" : { "rating" : 8.2, "votes" : "...", "id" : "..." } }
...

Utiliza el método MoreLikeThis() para buscar documentos que sean similares a un documento de entrada.

Este ejemplo utiliza la siguiente clase para especificar el documento de entrada para la búsqueda:

public class MovieSearch
{
public string Plot { get; set; } = null!;
}

El siguiente ejemplo busca en la colección movies documentos similares a un objeto en el que el valor del campo plot es "time travel":

var searchDocument = new MovieSearch()
{
Plot = "time travel",
};
var result = moviesCollection.Aggregate()
.Search(Builders<Movie>.Search.MoreLikeThis(searchDocument))
.ToList();
...
{ "_id" : ObjectId("..."), "title" : "Thrill Seekers", "plot" : "...", "genres" : ["Action", "Sci-Fi", "Thriller"], "year" : 1999, "rated" : "...", "imdb" : { "rating" : "...", "votes" : "...", "id" : "..." } }
{ "_id" : ObjectId("..."), "title" : "About Time", "plot" : "...", "genres" : ["Drama", "Fantasy", "Romance"], "year" : 2013, "rated" : "R", "imdb" : { "rating" : 7.8, "votes" : "...", "id" : "..." } }
...

Para aprender más sobre el operador moreLikeThis, se puede consultar la guía de Atlas moreLikeThis.

Usa el método Near() para buscar documentos en los que un campo especificado esté cerca de un valor dado. Puedes realizar la búsqueda en:

  • Un campo numérico

  • Un campo fecha

  • Un punto geográfico

El siguiente ejemplo busca en la colección movies aquellos documentos en los que el valor del campo imdb.rating se encuentra cerca de 8.5. Los documentos se muestran en orden según qué tan cercano esté el valor a 8.5:

var result = moviesCollection.Aggregate()
.Search(Builders<Movie>.Search.Near(m => m.Imdb.Rating, 8.5, 1))
.ToList();
...
{ "_id" : ObjectId("..."), "title" : "The Dark Knight", "plot" : "...", "genres" : ["Action", "Crime", "Drama"], "year" : 2008, "rated" : "PG-13", "imdb" : { "rating" : 9.0, "votes" : "...", "id" : "..." } }
{ "_id" : ObjectId("..."), "title" : "The Godfather", "plot" : "...", "genres" : ["Crime", "Drama"], "year" : 1972, "rated" : "R", "imdb" : { "rating" : 9.2, "votes" : "...", "id" : "..." } }
...

Para obtener más información sobre el operador near, consulte la guía cerca Atlas.

Utiliza el método Phrase() para buscar documentos en los que un campo especificado contenga una string de entrada.

El siguiente ejemplo registra la colección movies para documentos en los que, el campo plot contiene la frase "time travel":

var result = moviesCollection.Aggregate()
.Search(Builders<Movie>.Search.Phrase(m => m.Plot, "time travel"))
.ToList();
...
{ "_id" : ObjectId("..."), "title" : "The Time Traveler's Wife", "plot" : "...", "genres" : ["Drama", "Fantasy", "Romance"], "year" : 2009, "rated" : "PG-13", "imdb" : { "rating" : 7.1, "votes" : "...", "id" : "..." } }
{ "_id" : ObjectId("..."), "title" : "Safety Not Guaranteed", "plot" : "...", "genres" : ["Comedy", "Drama", "Romance"], "year" : 2012, "rated" : "R", "imdb" : { "rating" : 7, "votes" : "...", "id" : "..." } }
...

También puede buscar en la colección documentos que contengan "time travel" o "space adventure" en el campo plot:

var result = moviesCollection.Aggregate()
.Search(Builders<Movie>.Search.Phrase(m => m.Plot, new List<string>() { "time travel", "space adventure" }))
.ToList();
...
{ "_id" : ObjectId("..."), "title" : "The Time Traveler's Wife", "plot" : "...", "genres" : ["Drama", "Fantasy", "Romance"], "year" : 2009, "rated" : "PG-13", "imdb" : { "rating" : 7.1, "votes" : "...", "id" : "..." } }
{ "_id" : ObjectId("..."), "title" : "Safety Not Guaranteed", "plot" : "...", "genres" : ["Comedy", "Drama", "Romance"], "year" : 2012, "rated" : "R", "imdb" : { "rating" : 7, "votes" : "...", "id" : "..." } }
...

Para conocer más sobre el operador phrase, consulta la guía de frase Atlas.

Utiliza el método QueryString() para buscar documentos usando una string con los siguientes operadores y delimitadores:

  • AND

  • OR

  • NOT

  • ()

The following example searches the movies collection for documents in which the value of the plot field matches each of the following criteria:

  • Incluye la cadena "time" o la cadena "space"

  • No contiene la string "comedy"

var result = moviesCollection.Aggregate()
.Search(Builders<Movie>.Search.QueryString(m => m.Plot, "(time OR space) AND NOT comedy"))
.ToList();
...
{ "_id" : ObjectId("..."), "title" : "Interstellar", "plot" : "...", "genres" : ["Adventure", "Drama", "Sci-Fi"], "year" : 2014, "rated" : "PG-13", "imdb" : { "rating" : 8.7, "votes" : "...", "id" : "..." } }
{ "_id" : ObjectId("..."), "title" : "Tomorrowland", "plot" : "...", "genres" : ["Action", "Adventure", "Family"], "year" : 2015, "rated" : "PG", "imdb" : { "rating" : 6.6, "votes" : "...", "id" : "..." } }
...

Para obtener más información sobre el operador queryString, consulte la queryString guía de Atlas.

Utiliza el método Range() para buscar documentos en los que el valor de un campo especificado esté dentro de un rango numérico o de fechas determinado.

El siguiente ejemplo busca en la colección movies todos los documentos con un valor year mayor que 2000 y menor que 2010:

var result = moviesCollection.Aggregate()
.Search(Builders<Movie>.Search
.Range(m => m.Year, SearchRangeBuilder.Gt(2000).Lt(2010)))
.ToList();
...
{ "_id" : ObjectId("..."), "title" : "The Dark Knight", "plot" : "...", "genres" : ["Action", "Crime", "Drama"], "year" : 2008, "rated" : "PG-13", "imdb" : { "rating" : 9.0, "votes" : "...", "id" : "..." } }
{ "_id" : ObjectId("..."), "title" : "The Departed", "plot" : "...", "genres" : ["Crime", "Drama", "Thriller"], "year" : 2006, "rated" : "R", "imdb" : { "rating" : 8.5, "votes" : "...", "id" : "..." } }
...

Para obtener más información sobre el operador range, consulta la guía de rangos de Atlas.

Utilice el método Regex() para buscar documentos con una expresión regular.

El siguiente ejemplo busca en la colección movies documentos en los que el valor del campo title contenga exactamente seis letras:

var regex = "[A-Za-z]{6}";
var result = moviesCollection.Aggregate()
.Search(Builders<Movie>.Search.Regex(m => m.Title, regex,
allowAnalyzedField: true))
.ToList();
...
{ "_id" : ObjectId("..."), "title" : "Gandhi", "plot" : "...", "genres" : ["Biography", "Drama", "History"], "year" : 1982, "rated" : "PG", "imdb" : { "rating" : 8.0, "votes" : "...", "id" : "..." } }
{ "_id" : ObjectId("..."), "title" : "Batman", "plot" : "...", "genres" : ["Action", "Adventure"], "year" : 1989, "rated" : "PG-13", "imdb" : { "rating" : 7.5, "votes" : "...", "id" : "..." } }
...

Nota

Por defecto, el regex operador no puede ejecutarse en un campo analizado. Se puede permitir que se ejecute en un campo analizado estableciendo la opción allowAnalyzedField en true, de la siguiente manera:

var result = moviesCollection.Aggregate()
.Search(Builders<Movie>.Search.Regex(m => m.Title, regex,
allowAnalyzedField: true))
.ToList();

Configurar la opción allowAnalyzedField en verdadero puede dar lugar a resultados de búsqueda inesperados. Para obtener más información, consulte Comportamiento regex.

Para obtener más información sobre el operador regex, consulte la Guía de Atlas regex.

Utiliza el método Span() para buscar coincidencias de texto dentro de las regiones de un campo. Puedes usar este método para encontrar cadenas que estén cerca unas de otras con grados específicos de precisión.

Nota

El operador span consume más cálculos que otros operadores porque las queries deben rastrear la información posicional.

El siguiente ejemplo busca en la colección movies los documentos en los que el valor del campo plot contiene las cadenas "time" y "travel" dentro de una palabra de distancia la una de la otra:

var searchTerms = new[]
{
Builders<Movie>.SearchSpan.Term(m => m.Plot, "time"),
Builders<Movie>.SearchSpan.Term(m => m.Plot, "travel")
};
var result = moviesCollection.Aggregate()
.Search(Builders<Movie>.Search.Span(Builders<Movie>.SearchSpan.Near(searchTerms, 1)))
.ToList();
...
{ "_id" : ObjectId("..."), "title" : "The Time Traveler's Wife", "plot" : "...", "genres" : ["Drama", "Fantasy", "Romance"], "year" : 2009, "rated" : "PG-13", "imdb" : { "rating" : 7.1, "votes" : "...", "id" : "..." } }
{ "_id" : ObjectId("..."), "title" : "About Time", "plot" : "...", "genres" : ["Drama", "Fantasy", "Romance"], "year" : 2013, "rated" : "R", "imdb" : { "rating" : 7.8, "votes" : "...", "id" : "..." } }
...

Para obtener más información sobre el operador span, consulta la guía de Atlas span.

Utilice el método Text() para buscar un documento por una cadena dada o un arreglo de cadenas. Si hay varios términos en una cadena determinada, MongoDB Search también busca por separado una coincidencia para cada término en la cadena.

El siguiente ejemplo busca en la colección movies los documentos en los que el valor del campo plot contiene la string "secret agent":

var result = moviesCollection.Aggregate()
.Search(Builders<Movie>.Search.Text(m => m.Plot, "secret agent"))
.ToList();
...
{ "_id" : ObjectId("..."), "title" : "Spy Kids", "plot" : "...", "genres" : ["Action", "Adventure", "Comedy"], "year" : 2001, "rated" : "PG", "imdb" : { "rating" : 5.4, "votes" : "...", "id" : "..." } }
{ "_id" : ObjectId("..."), "title" : "The Spy Who Loved Me", "plot" : "...", "genres" : ["Action", "Adventure", "Thriller"], "year" : 1977, "rated" : "PG", "imdb" : { "rating" : 7.1, "votes" : "...", "id" : "..." } }
...

Tip

Si su cadena de búsqueda contiene varios términos, el método también busca una coincidencia para cada término en la cadena por separado.

Para aprender más sobre el operador text, consulta la guía Atlas de texto.

Utiliza el método Wildcard() para buscar documentos utilizando caracteres especiales en tu string de búsqueda que puedan coincidir con cualquier carácter. Puede utilizar los siguientes caracteres en su búsqueda:

Carácter
Descripción

?

Coincide con cualquier carácter único

*

Coincide con 0 o más caracteres

\

carácter de escape

El siguiente ejemplo busca documentos en los que el valor del campo title contiene la string "Amer" seguida de cualquier otro carácter:

var result = moviesCollection.Aggregate()
.Search(Builders<Movie>.Search.Wildcard(m => m.Title, "Amer*", allowAnalyzedField: true))
.ToList();
...
{ "_id" : ObjectId("..."), "title" : "American Beauty", "plot" : "...", "genres" : ["Drama"], "year" : 1999, "rated" : "R", "imdb" : { "rating" : 8.4, "votes" : "...", "id" : "..." } }
{ "_id" : ObjectId("..."), "title" : "American Gangster", "plot" : "...", "genres" : ["Biography", "Crime", "Drama"], "year" : 2007, "rated" : "R", "imdb" : { "rating" : 7.8, "votes" : "...", "id" : "..." } }
...

Nota

Por defecto, el wildcard operador no puede ejecutarse en un campo analizado. Se puede permitir que se ejecute en un campo analizado estableciendo la opción allowAnalyzedField en true, de la siguiente manera:

var result = moviesCollection.Aggregate()
.Search(Builders<Movie>.Search.Wildcard(m => m.Title, "Amer*", allowAnalyzedField: true))
.ToList();

Si se establece la opción de allowAnalyzedField como verdadera, podría generar resultados de búsqueda inesperados. Para obtener más información, consulta comportamiento de comodines.

Para obtener más información sobre el operador wildcard, consulta la guía wildcard de Atlas.

Volver

Operaciones con desarrolladores

En esta página