Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

MongoDB búsqueda

En esta guía puede aprender cómo 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 la pipeline $search, consulta $busqueda.

Nota

Solo disponible en Atlas para 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 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, consulta Serialización personalizada.

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 query de autocompletado en el campo make para el texto que comienza con la string "Gib".

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

Nota

Índice para consultas de autocompletado

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 MongoDB Search, se 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 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 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 a 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 muestra 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 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 documentos incrustados, debe crear un índice embeddedDocument en el campo de la matriz.

Para aprender cómo definir un índice de embeddedDocument, consulta Definir el índice del 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 }

Después de crear un índice embeddedDocument en el campo productDetails, puedes realizar operaciones de MongoDB Search en los documentos de ese campo. El siguiente ejemplo realiza una búsqueda de texto en los campos del arreglo productDetails y devuelve cualquier documento con un valor de campo serial de "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 operador embeddedDocument, consulta la guía de Atlas embeddedDocument.

Utiliza 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 muestra 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.

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.

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 muestra 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 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])

Considera que algunos documentos en la guitars colección han agregado un campo in_stock_location. Los documentos modificados en la colección ahora se ven de la siguiente manera:

{ "_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 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])

Considera que algunos documentos en la guitars colección han agregado un campo in_stock_location. Los documentos modificados en la colección ahora se ven de la siguiente manera:

{ "_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 muestra 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 }

Utiliza 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 muestra 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.

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

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 muestra 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 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.

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 muestra 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 puedes 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.

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 guitars collection for documents in which the value of the description field matches each of the following criteria:

  • Contiene la cadena "string" o la cadena "string"

  • 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 muestra 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 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.

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 operador range, consulta la guía de rangos de Atlas.

Utilice el método Regex() para buscar documentos con 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

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 = 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 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 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.

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

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

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 = guitarsCollection.Aggregate()
.Search(Builders<Guitar>.Search.Wildcard(g => g.Make, "Strand*", 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 Constructores

En esta página