Docs Menu
Docs Home
/ /

MongoDB búsqueda

En esta guía podrás aprender a utilizar el Search Constructor para crear una etapa de canalización de agregación $search con el controlador MongoDB .NET/C#.

Para obtener más información sobre la etapa de canalización $search, consulte $búsqueda.

Nota

Solo disponible en Atlas para MongoDB v4.2 y versiones posteriores

El $search operador de canalización de agregación solo está disponible para colecciones alojadas en clústeres de MongoDB Atlas 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, consulte la documentación de MongoDB Search.

Los ejemplos de esta guía usan los siguientes documentos en una colección llamada guitars:

{ "_id": 1, "make": "Fender", "description": "Classic guitars known for their versatility.", "establishedYear": 1946, "in_stock": true, "rating": 9 }
{ "_id": 2, "make": "Gibson", "description": "Classic guitars known for their rich, full tones.", "establishedYear": 1902, "in_stock": true, "rating": 8 }
{ "_id": 3, "make": "PRS", "description": "High-end guitars known for their quality.", "establishedYear": 1985, "in_stock": true, "rating": 9 }
{ "_id": 4, "make": "Kiesel", "description": "Quality guitars made only for custom orders.", "establishedYear": 2015, "in_stock": false }
{ "_id": 5, "make": "Ibanez", "description": "Well-crafted guitars used by many professional guitarists.", "establishedYear": 1957, "in_stock": true, "rating": 7 }
{ "_id": 6, "make": "Strandberg", "description": "Modern guitars known for their headless models.", "establishedYear": 1982, "in_stock": false }

La siguiente clase Guitar modela los documentos de esta colección.

public class Guitar
{
public int Id { get; set; }
public string Make { get; set; }
public List<string> Models { get; set; }
public int EstablishedYear { get; set; }
[BsonElement("in_stock")]
public bool InStock { get; set; }
public int? Rating { get; set; }
}

Nota

Los documentos de la colección guitars 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 Guitar.

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

Antes de realizar una búsqueda en una colección de Atlas, debe crear un índice de búsqueda de Atlas en la colección. Un índice de búsqueda de MongoDB es una estructura de datos que categoriza los datos en un formato que permite realizar búsquedas.

Para aprender cómo crear un índice de búsqueda de MongoDB, consulte la guía Atlas Crear un índice de búsqueda de MongoDB.

La Search clase contiene métodos que permiten realizar $search operaciones. Para obtener una lista completa de los $search operadores disponibles, consulte la guía Atlas de operadores y recopiladores.

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

El siguiente ejemplo realiza una consulta de autocompletar en el campo make para el texto que comienza con la cadena "Gib".

var result = guitarsCollection.Aggregate()
.Search(Builders<Guitar>.Search.Autocomplete(g => g.Make, "Gib"), indexName: "guitarmakes")
.ToList();

Nota

Índice de consultas de autocompletar

Debe crear un índice de búsqueda de MongoDB compatible con el autocompletado para ejecutar consultas de autocompletado correctamente. Para obtener más información, consulte "Cómo indexar campos para el autocompletado" en la documentación de Atlas.

Después de crear el índice de búsqueda de MongoDB, debe pasar el nombre del índice al método Autocomplete(), como se muestra en el código anterior.

La búsqueda devuelve el siguiente documento:

{ "_id" : 2, "make" : "Gibson", "description" : "Classic guitars known for their rich, full tones.", "establishedYear" : 1902, "in_stock" : true, "rating" : 8 }

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

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

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

  • El campo rating existe en el documento

  • El campo in_stock no es false

  • El campo establishedYear tiene un valor mayor que 1940

var result = guitarsCollection.Aggregate()
.Search(Builders<Guitar>.Search.Compound()
.Must(Builders<Guitar>.Search.Exists(g => g.Rating))
.MustNot(Builders<Guitar>.Search.Equals(g => g.InStock, false))
.Must(Builders<Guitar>.Search.Range(g => g.EstablishedYear, SearchRangeBuilder.Gt(1940))))
.ToList();

La búsqueda devuelve los siguientes documentos:

{ "_id" : 1, "make" : "Fender", "description" : "...", "establishedYear" : 1946, "in_stock" : true, "rating" : 9 }
{ "_id" : 3, "make" : "PRS", "description" : "...", "establishedYear" : 1985, "in_stock" : true, "rating" : 9 }
{ "_id" : 5, "make" : "Ibanez", "description" : "...", "establishedYear" : 1957, "in_stock" : true, "rating" : 7 }

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

Utilice el método EmbeddedDocument() para realizar operaciones de búsqueda en documentos dentro del valor de la matriz de un campo.

Nota

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

Para aprender a definir un embeddedDocument índice, consulte Definir el índice para el tipo embeddedDocument en la documentación de Atlas.

Tenga en cuenta que algunos documentos de la colección guitars han agregado un campo productDetails que contiene una matriz de objetos de detalles del producto:

{ "_id": 1, "make": "Fender", "description": "...", "establishedYear": 1946, "in_stock": true, "rating": 9, "productDetails": [{"product_id": 1234, "serial": "YZ5678"}] }
{ "_id": 2, "make": "Gibson", "description": "...", "establishedYear": 1902, "in_stock": true, "rating": 8 }
{ "_id": 3, "make": "PRS", "description": "...", "establishedYear": 1985, "in_stock": true, "rating": 9, "productDetails": [{"product_id": 9870, "serial": "AB5555"}] }
{ "_id": 4, "make": "Kiesel", "description": "...", "establishedYear": 2015, "in_stock": false }
{ "_id": 5, "make": "Ibanez", "description": "...", "establishedYear": 1957, "in_stock": true, "rating": 7, "productDetails": [{"product_id": 5432, "serial": "ZZ1234"}] }
{ "_id": 6, "make": "Strandberg", "description": "...", "establishedYear": 1982, "in_stock": false }

Tras crear un índice embeddedDocument en el campo productDetails, puede realizar búsquedas de MongoDB en los documentos de ese campo. El siguiente ejemplo realiza una búsqueda de texto en los campos de la matriz productDetails y devuelve cualquier documento cuyo valor en el campo serial sea "YZ5678":

var result = guitarsCollection.Aggregate()
.Search(Builders<Guitar>.Search.EmbeddedDocument(
g => g.ProductDetails,
Builders<ProductDetails>.Search.Text(p => p.Serial, "YZ5678")
)).ToList();
return result;

La búsqueda devuelve el siguiente documento:

{ "_id" : 1, "make" : "Fender", "description" : "Classic guitars known for their versatility.", "establishedYear" : 1946, "in_stock" : true, "rating" : 9, "productDetails" : [{ "product_id" : 1234, "serial" : "YZ5678" }] }

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

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

The following example searches the guitars collection for any documents in which the value of the in_stock field is true.

var result = guitarsCollection.Aggregate()
.Search(Builders<Guitar>.Search.Equals(g => g.InStock, true))
.ToList();

La búsqueda devuelve los siguientes documentos:

{ "_id" : 1, "make" : "Fender", "description" : "...", "establishedYear" : 1946, "in_stock" : true, "rating" : 9 }
{ "_id" : 2, "make" : "Gibson", "description" : "...", "establishedYear" : 1902, "in_stock" : true, "rating" : 8 }
{ "_id" : 3, "make" : "PRS", "description" : "...", "establishedYear" : 1985, "in_stock" : true, "rating" : 9 }
{ "_id" : 5, "make" : "Ibanez", "description" : "...", "establishedYear" : 1957, "in_stock" : true, "rating" : 7 }

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

Utilice el método Exists() para buscar documentos que contengan un nombre de campo indexado específico. Si el campo especificado existe, pero no está indexado, el documento no se incluye en el conjunto de resultados.

The following example searches the guitars collection for any documents in which the rating field exists.

var result = guitarsCollection.Aggregate()
.Search(Builders<Guitar>.Search.Exists(g => g.Rating))
.ToList();

La búsqueda devuelve los siguientes documentos:

{ "_id" : 1, "make" : "Fender", "description" : "...", "establishedYear" : 1946, "in_stock" : true, "rating" : 9 }
{ "_id" : 2, "make" : "Gibson", "description" : "...", "establishedYear" : 1902, "in_stock" : true, "rating" : 8 }
{ "_id" : 3, "make" : "PRS", "description" : "...", "establishedYear" : 1985, "in_stock" : true, "rating" : 9 }
{ "_id" : 5, "make" : "Ibanez", "description" : "...", "establishedYear" : 1957, "in_stock" : true, "rating" : 7 }

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

Utilice el método GeoShape() para buscar documentos relacionados con una geometría dada. Al especificar las coordenadas de búsqueda, primero debe especificarse la longitud y luego la latitud. Los valores de longitud pueden estar entre -180 y 180, ambos inclusive. Los valores de latitud pueden estar entre -90 y 90, ambos inclusive.

Nota

La búsqueda de MongoDB no admite lo siguiente:

  • Sistema de referencia de coordenadas (CRS) no predeterminado

  • Sistema de coordenadas XY planas (2 dimensión)

  • Pares de coordenadas Notación de puntos (pointFieldName: [12, 34])

Considere que algunos documentos de la colección guitars han añadido un campo in_stock_location. Los documentos modificados de la colección ahora tienen el siguiente aspecto:

{ "_id": 1, "make": "Fender", "description": "...", "establishedYear": 1946, "in_stock": true, "in_stock_location": { "type": "Point", "coordinates": [ -73.93615, 40.69791 ]}, "rating": 9 }
{ "_id": 2, "make": "Gibson", "description": "...", "establishedYear": 1902, "in_stock": true, "in_stock_location": { "type": "Point", "coordinates": [ 47.6062, 122.321 ]}, "rating": 8 }

The following example searches for all documents in which the coordinates in the in_stock_location field intersect with a specified polygon:

GeoJsonPolygon<GeoJson2DGeographicCoordinates> searchArea = new(new(new(new GeoJson2DGeographicCoordinates[]
{
new(-72.93615, 41.69791),
new(-72.93615, 40.59791),
new(-74.93615, 40.59791),
new(-74.93615, 41.69791),
new(-72.93615, 41.69791),
})));
var result = guitarsCollection.Aggregate()
.Search(Builders<Guitar>.Search.GeoShape(g => g.InStockLocation, GeoShapeRelation.Intersects, searchArea))
.ToList();

La búsqueda devuelve el siguiente documento:

{ "_id" : 1, "make" : "Fender", "description" : "...", "establishedYear" : 1946, "in_stock" : true, "in_stock_location" : { "type" : "Point", "coordinates" : ["-73.93615", "40.69791"] }, "rating" : 9 }

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

Utilice el GeoWithin() método para buscar documentos cuyas coordenadas del campo GeoJSON especificado se encuentren dentro de una geometría dada. Puede buscar puntos que se encuentren dentro de:

  • Círculo

  • Cuadro delimitador

  • Polígono

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

Nota

La búsqueda de MongoDB no admite lo siguiente:

  • Sistema de referencia de coordenadas (CRS) no predeterminado

  • Sistema de coordenadas XY planas (2 dimensión)

  • Pares de coordenadas Notación de puntos (pointFieldName: [12, 34])

Considere que algunos documentos de la colección guitars han añadido un campo in_stock_location. Los documentos modificados de la colección ahora tienen el siguiente aspecto:

{ "_id": 1, "make": "Fender", "description": "...", "establishedYear": 1946, "in_stock": true, "in_stock_location": { "type": "Point", "coordinates": [ -73.93615, 40.69791 ]}, "rating": 9 }
{ "_id": 2, "make": "Gibson", "description": "...", "establishedYear": 1902, "in_stock": true, "in_stock_location": { "type": "Point", "coordinates": [ 47.6062, 122.321 ]}, "rating": 8 }

The following example searches for all documents in which the coordinates in the in_stock_location field falls within a specified polygon:

GeoJsonPolygon<GeoJson2DGeographicCoordinates> searchArea = new(new(new(new GeoJson2DGeographicCoordinates[]
{
new(-74.3994140625, 40.5305017757),
new(-74.7290039063, 40.5805846641),
new(-74.7729492188, 40.9467136651),
new(-74.0698242188, 41.1290213475),
new(-73.65234375, 40.9964840144),
new(-72.6416015625, 40.9467136651),
new(-72.3559570313, 40.7971774152),
new(-74.3994140625, 40.5305017757),
})));
var result = guitarsCollection.Aggregate()
.Search(Builders<Guitar>.Search.GeoWithin(g => g.InStockLocation, searchArea))
.ToList();

La búsqueda devuelve el siguiente documento:

{ "_id" : 1, "make" : "Fender", "description" : "Classic guitars known for their versatility.", "establishedYear" : 1946, "in_stock" : true, "in_stock_location" : { "type" : "Point", "coordinates" : ["-73.93615", "40.69791"] }, "rating" : 9 }

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

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

The following example searches the guitars collection for documents that have a make field value of either "Fender" or "Gibson".

var result = guitarsCollection.Aggregate()
.Search(Builders<Guitar>.Search.In(g => g.Make, ["Fender", "Gibson"]))
.ToList();

La búsqueda devuelve los siguientes documentos:

{ "_id": 1, "make": "Fender", "description": "...", "establishedYear": 1946, "in_stock": true, "rating": 9 }
{ "_id": 2, "make": "Gibson", "description": "...", "establishedYear": 1902, "in_stock": true, "rating": 8 }

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

The following example searches the guitars collection for documents that are similar to an object in which the value of the Description field is "high quality."

var searchDocument = new GuitarSearch()
{
Description = "high quality",
};
var result = guitarsCollection.Aggregate()
.Search(Builders<Guitar>.Search.MoreLikeThis(searchDocument))
.ToList();

La búsqueda devuelve los siguientes documentos:

{ "_id" : 3, "make" : "PRS", "description" : "High-end guitars known for their quality.", "establishedYear" : 1985, "in_stock" : true, "rating" : 9 }
{ "_id" : 4, "make" : "Kiesel", "description" : "Quality guitars made only for custom orders.", "establishedYear" : 2015, "in_stock" : false, "rating" : null }

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

Utilice el método Near() para buscar documentos en los que un campo específico esté cerca de un valor dado. Puede realizar la búsqueda en:

  • Un campo numérico

  • Un campo de fecha

  • Un punto geográfico

The following example searches the guitars collection for documents in which the value of the rating field is near 9. The documents are returned in order based on how close the value is to the number 9.

var result = guitarsCollection.Aggregate()
.Search(Builders<Guitar>.Search.Near(g => g.Rating, 9, 1))
.ToList();

La búsqueda devuelve los siguientes documentos:

{ "_id" : 1, "make" : "Fender", "description" : "...", "establishedYear" : 1946, "in_stock" : true, "rating" : 9 }
{ "_id" : 3, "make" : "PRS", "description" : "...", "establishedYear" : 1985, "in_stock" : true, "rating" : 9 }
{ "_id" : 2, "make" : "Gibson", "description" : "...", "establishedYear" : 1902, "in_stock" : true, "rating" : 8 }
{ "_id" : 5, "make" : "Ibanez", "description" : "...", "establishedYear" : 1957, "in_stock" : true, "rating" : 7 }

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

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

The following example searches the guitars collection for documents in which the description field contains the phrase "classic guitars."

var result = guitarsCollection.Aggregate()
.Search(Builders<Guitar>.Search.Phrase(g => g.Description, "classic guitars"))
.ToList();

La búsqueda devuelve los siguientes documentos:

{ "_id" : 1, "make" : "Fender", "description" : "Classic guitars known for their versatility.", "establishedYear" : 1946, "in_stock" : true, "rating" : 9 }
{ "_id" : 2, "make" : "Gibson", "description" : "Classic guitars known for their rich, full tones.", "establishedYear" : 1902, "in_stock" : true, "rating" : 8 }

También puede buscar en la colección documentos que coincidan con varias frases independientes de la siguiente manera:

var result = guitarsCollection.Aggregate()
.Search(Builders<Guitar>.Search.Phrase(g => g.Description, new List<string>() { "classic guitars", "quality guitars" }))
.ToList();

Esta búsqueda devuelve los siguientes documentos:

{ "_id" : 1, "make" : "Fender", "description" : "Classic guitars known for their versatility.", "establishedYear" : 1946, "in_stock" : true, "rating" : 9 }
{ "_id" : 4, "make" : "Kiesel", "description" : "Quality guitars made only for custom orders.", "establishedYear" : 2015, "in_stock" : false, "rating" : null }
{ "_id" : 2, "make" : "Gibson", "description" : "Classic guitars known for their rich, full tones.", "establishedYear" : 1902, "in_stock" : true, "rating" : 8 }

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

Utilice el método QueryString() para buscar documentos utilizando una cadena con los siguientes operadores y delimitadores:

  • AND

  • OR

  • NOT

  • ()

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

  • Contiene la cadena "clásico" o la cadena "calidad"

  • No contiene la cadena "custom"

var result = guitarsCollection.Aggregate()
.Search(Builders<Guitar>.Search.QueryString(g => g.Description, "(classic OR quality) AND NOT custom"))
.ToList();

La búsqueda devuelve los siguientes documentos:

{ "_id" : 1, "make" : "Fender", "description" : "Classic guitars known for their versatility.", "establishedYear" : 1946, "in_stock" : true, "rating" : 9 }
{ "_id" : 3, "make" : "PRS", "description" : "High-end guitars known for their quality.", "establishedYear" : 1985, "in_stock" : true, "rating" : 9 }
{ "_id" : 2, "make" : "Gibson", "description" : "Classic guitars known for their rich, full tones.", "establishedYear" : 1902, "in_stock" : true, "rating" : 8 }

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

Utilice el método Range() para buscar documentos en los que el valor de un campo específico se encuentre dentro de un rango numérico o de fechas determinado.

The following example searches the guitars collection for all documents with an establishedYear value greater than 1980 and less than 2020.

var result = guitarsCollection.Aggregate()
.Search(Builders<Guitar>.Search.Range(g => g.EstablishedYear, SearchRangeBuilder.Gt(1980).Lt(2020)))
.ToList();

La búsqueda devuelve los siguientes resultados:

{ "_id" : 3, "make" : "PRS", "description" : "High-end guitars known for their quality.", "establishedYear" : 1985, "in_stock" : true, "rating" : 9 }
{ "_id" : 4, "make" : "Kiesel", "description" : "Quality guitars made only for custom orders.", "establishedYear" : 2015, "in_stock" : false, "rating" : null }
{ "_id" : 6, "make" : "Strandberg", "description" : "Modern guitars known for their headless models.", "establishedYear" : 1982, "in_stock" : false, "rating" : null }

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

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

The following example searches the guitars collection for documents in which the value of the make field contains exactly six letters.

var regex = "[A-Za-z]{6}";
var result = guitarsCollection.Aggregate()
.Search(Builders<Guitar>.Search.Regex(g => g.Make, regex))
.ToList();

La búsqueda devuelve los siguientes resultados:

{ "_id" : 1, "make" : "Fender", "description" : "Classic guitars known for their versatility.", "establishedYear" : 1946, "in_stock" : true, "rating" : 9 }
{ "_id" : 2, "make" : "Gibson", "description" : "Classic guitars known for their rich, full tones.", "establishedYear" : 1902, "in_stock" : true, "rating" : 8 }
{ "_id" : 4, "make" : "Kiesel", "description" : "Quality guitars made only for custom orders.", "establishedYear" : 2015, "in_stock" : false, "rating" : null }
{ "_id" : 5, "make" : "Ibanez", "description" : "Well-crafted guitars used by many professional guitarists.", "establishedYear" : 1957, "in_stock" : true, "rating" : 7 }

Nota

De forma predeterminada, el operador regex no puede ejecutarse en un campo analizado. Puede permitir su ejecución en un campo analizado configurando la opción allowAnalyzedField como verdadera, como se indica a continuación:

var result = guitarsCollection.Aggregate()
.Search(Builders<Guitar>.Search.Regex(g => g.Make, regex, true))
.ToList();

Configurar la allowAnalyzedField opción como verdadera puede generar resultados de búsqueda inesperados. Para obtener más información, consulte Comportamiento de expresiones regulares.

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

Utilice el método Span() para buscar coincidencias de texto dentro de las regiones de un campo. Puede usar este método para encontrar cadenas cercanas entre sí con un grado de precisión específico.

Nota

El operador span requiere un mayor esfuerzo computacional que otros operadores porque las consultas deben realizar un seguimiento de la información posicional.

The following example searches the guitars collection for documents in which the value of the description field contains the strings "guitars" and "quality" within one word of each other.

var searchTerms = new[]
{
Builders<Guitar>.SearchSpan.Term(g => g.Description, "guitars"),
Builders<Guitar>.SearchSpan.Term(g => g.Description, "quality")
};
var result = guitarsCollection.Aggregate()
.Search(Builders<Guitar>.Search.Span(Builders<Guitar>.SearchSpan.Near(searchTerms, 1)))
.ToList();

La búsqueda devuelve el siguiente documento:

{ "_id" : 4, "make" : "Kiesel", "description" : "Quality guitars made only for custom orders.", "establishedYear" : 2015, "in_stock" : false, "rating" : null }

Aunque el documento con _id: 3 contiene las cadenas "guitarras" y "calidad", están separadas por más de una palabra, por lo que la búsqueda omite este documento de los resultados.

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

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

The following example searches the guitars collection for documents in which the value of the description field contains the string "used by professionals".

var result = guitarsCollection.Aggregate()
.Search(Builders<Guitar>.Search.Text(g => g.Description, "used by professional"))
.ToList();

La búsqueda devuelve el siguiente documento:

{ "_id" : 5, "make" : "Ibanez", "description" : "Well-crafted guitars used by many professional guitarists.", "establishedYear" : 1957, "in_stock" : true, "rating" : 7 }

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 obtener más información sobre el text operador, consulte la guía de texto de Atlas.

Utilice el método Wildcard() para buscar documentos utilizando caracteres especiales en su cadena de búsqueda que coincidan con cualquier carácter. Puede usar los siguientes caracteres en su búsqueda:

Carácter
Descripción

?

Coincide con cualquier carácter individual

*

Coincide con 0 o más caracteres

\

Personaje de escape

The following example searches for documents in which the value of the make field contains the string "Strand" followed by any other characters.

var result = guitarsCollection.Aggregate()
.Search(Builders<Guitar>.Search.Wildcard(g => g.Make, "Strand*"))
.ToList();

La búsqueda devuelve el siguiente documento:

{ "_id" : 6, "make" : "Strandberg", "description" : "Modern guitars known for their headless models.", "establishedYear" : 1982, "in_stock" : false, "rating" : null }

Nota

De forma predeterminada, el operador wildcard no puede ejecutarse en un campo analizado. Puede permitir su ejecución en un campo analizado configurando la opción allowAnalyzedField como verdadera, como se indica a continuación:

var result = guitarsCollection.Aggregate()
.Search(Builders<Guitar>.Search.Wildcard(g => g.Make, "Strand*", true))
.ToList();

Configurar la allowAnalyzedField opción como verdadera puede generar resultados de búsqueda inesperados. Para obtener más información, consulte Comportamiento de los comodines.

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

Volver

Operaciones con Constructores

En esta página