Conozca las novedades en:
Novedades de 3.7
La versión del controlador 3.7 incluye las siguientes nuevas funcionalidades, mejoras y correcciones:
Agrega soporte para el sistema de trazado OpenTelemetry.
Agrega soporte para crear una sesión de instantáneas con una
SnapshotTimevalue.Amplía el soporte de las funcionalidades de los servidores despriorizados de la selección de servidores de clústeres a todos los tipos de topología.
Actualiza la API de
withTransactionpara evitar que las transacciones se reintenten con demasiada frecuencia.Admite una nueva sobrecarga del método
Enumerable.Reverse()para valores de matriz introducidos por .NET 10.Admite filtros que comparan valores numéricos anulables o
charcon valores constantes.Agrega soporte para expresiones
ConvertChecked.Reescribe las consultas que utilizan los operadores
$elemMatchy$orinvirtiendo el orden de los operadores, debido a una limitación del servidor.Implementa un nuevo sistema de
KnownSerializerFinderque preanaliza las expresiones para crear un mapa de serializadores conocidos para cada nodo de expresión.Actualiza la ruta del código de conexión sincrónica para usar
ConnectAsync, lo que reduce el riesgo de deadlocks.Convierte las clases de eliminación en estructuras, lo que reduce las asignaciones de memoria.
Optimiza la traducción de expresiones de comparación para constantes booleanas que aceptan valores nulos.
Evita la asignación de arreglos de bytes al escribir valores de
Int64yDoubleal reutilizar el arreglo_tempdeByteBufferStream.Optimiza la clase
CommandEventHelperpara evitar la decodificación de mensajes redundantes.Corrige el comportamiento de serialización para enumeraciones que tienen tipos subyacentes
ushort.Genera un
ExpressionNotSupportedExceptionsi se realizanString.IndexOf()comparaciones con valores negativos.Evita la creación de un
ClusterDescriptionChangedEventcuando las actualizaciones de DNS no cambian el estado de detección y monitoreo del servidor.Actualiza las referencias de propiedades intraducibles en las expresiones LINQ para recurrir a la ejecución en el lado del cliente.
Actualiza
IPAddressSerializerpara serializar instancias deIPAddresssin generar un error.Corrige un error en el que el optimizador
GroupBygeneraba rutas de campo incorrectas para los acumuladoresFirstyLastsi una operación anterior envolvía los datos de origen.Corrige los interbloqueos durante la inicialización concurrente de
BsonClassMap, que se produjeron después de actualizar a .NET/C# Driver 3.5.2.
Para obtener más información sobre esta versión, consulte las 3.7 notas de la versión v en GitHub.
Novedades en 3.6
La versión del controlador 3.6 incluye las siguientes nuevas funcionalidades, mejoras y correcciones:
Agrega la clase
CreateVectorSearchIndexModel, una API fuertemente tipada para crear índices de MongoDB Vector Search. Para obtener más información sobre esta API, consulta Ejecutar una consulta de búsqueda vectorial de MongoDB.Agrega el modelo de índice
CreateAutoEmbeddingVectorSearchIndexModelpara generar automáticamente incrustaciones de vectores para campos de texto. Para conocer más detalles, consulta la guía de MongoDB Search y de índices de Vector Search en MongoDB.Añade un modo de compatibilidad hacia atrás para el tipo
TimeOnlypara leer correctamente documentos serializados por versiones del controlador anteriores a la v3.0.Usa rutas estándar RID en el empaquetado
MongoDB.Driver.Encryption.Agrega soporte para el método estático
String.Compare()en consultas LINQ.Agrega soporte para usar campos
Dictionarycomo tiposIEnumerable<KeyValuePair<TKey, TValue>>.Agrega compatibilidad para las propiedades
DictionaryKeysyValuesen las consultas LINQ.Añade una sobrecarga de constructor
Decimal128para tiposbyteyshortpara dar soporte a la compatibilidad con .NET 10.Agrega soporte para cambios de C# 14 que hacen que algunas sobrecargas de métodos se vinculen a métodos
MemoryExtensionsen lugar de métodosEnumerable.Mapas
MemoryExtensions.Contains()yMemoryExtensions.SequenceEqual()métodos que tienen un comparador nulo aEnumerablemétodos que no tienen un parámetro comparador.Mejora el rendimiento de la serialización y reduce las asignaciones de memoria mediante las siguientes mejoras:
Elimina asignaciones de
GetBitArray()enBsonClassMapSerializer.DeserializeClass().Usa
KeyValuePairSerializerde forma constante paraKeyValuePair.Evita el boxeo
RentedBufferen la claseDisposableSegment.Evita asignaciones para
BsonBinaryReaderContextyBsonBinaryWriterContext.Cambia a un bucle
forenBsonClassMapSerializer.SerializeClass()para reducir las asignaciones.
Optimiza la traducción LINQ para los métodos
First()yFirstOrDefault()con predicados.Resuelve un problema por el cual el controlador .NET/C# dejó de funcionar con Unity desde la versión v3.2.0.
Corrige un problema con el filtrado por tipos derivados.
Para obtener más información sobre esta versión, consulte las 3.6 notas de la versión v en GitHub.
Novedades en 3.5
Advertencia
Cambios disruptivos en la versión v3.5
MongoDB .NET/C# Driver 3.5 contiene cambios disruptivos. Consulta Cambios Disruptivos de la Versión 3.5 para obtener más información.
La versión del controlador 3.5 incluye las siguientes nuevas funcionalidades, mejoras y correcciones:
Agrega soporte experimental para queries de prefijo, sufijo y subcadena en Queryable Encryption. Estas funcionalidades son inestables y su seguridad no está garantizada hasta que estén generalmente disponibles (GA). Usarlas solo en cargas de trabajo experimentales. Para obtener más información sobre QE, consulte Encriptación en uso.
Agrega la clase CsfleSchemaBuilder al paquete
MongoDB.Driver.Encryption. Puedes utilizar esta clase para crear esquemas JSON para cifrado a nivel de campo del lado del cliente (CSFLE), como se muestra en el siguiente ejemplo:var builder = CsfleSchemaBuilder.Create(schemaBuilder => { schemaBuilder.Encrypt<Patient>(_collectionNamespace, builder => { builder .EncryptMetadata(keyId: _keyId) .Property(p => p.MedicalRecords, BsonType.Array, EncryptionAlgorithm.AEAD_AES_256_CBC_HMAC_SHA_512_Random) .Property("bloodType", BsonType.String, algorithm: EncryptionAlgorithm.AEAD_AES_256_CBC_HMAC_SHA_512_Random) .Property(p => p.Ssn, BsonType.Int32, EncryptionAlgorithm.AEAD_AES_256_CBC_HMAC_SHA_512_Deterministic) .Property(p => p.Insurance, innerBuilder => { innerBuilder .Property(i => i.PolicyNumber, BsonType.Int32, EncryptionAlgorithm.AEAD_AES_256_CBC_HMAC_SHA_512_Deterministic); }) .PatternProperty("_PIIString$", BsonType.String, EncryptionAlgorithm.AEAD_AES_256_CBC_HMAC_SHA_512_Deterministic) .PatternProperty("_PIIArray$", BsonType.Array, EncryptionAlgorithm.AEAD_AES_256_CBC_HMAC_SHA_512_Random) .PatternProperty(p => p.Insurance, innerBuilder => { innerBuilder .PatternProperty("_PIIString$", BsonType.String, EncryptionAlgorithm.AEAD_AES_256_CBC_HMAC_SHA_512_Deterministic) .PatternProperty("_PIINumber$", BsonType.Int32, algorithm: EncryptionAlgorithm.AEAD_AES_256_CBC_HMAC_SHA_512_Deterministic); }); }); }); var schema = builder.Build(); Para obtener más información sobre CSFLE, consulte encriptación en uso.
Agrega los siguientes métodos LINQ:
Median(): Calcula la mediana de una secuencia de valores.Percentile()Calcula múltiples percentiles de una secuencia de valores.
Puedes utilizar estos métodos para realizar cálculos como parte de las etapas de agregación
$groupy$setWindowFields.Agrega una nueva Ascendente() y Descendente() métodos sobrecargados a la clase
SortDefinitionBuilder. Puedes utilizar estos métodos para ordenar elementos por valor al utilizar el operador de actualizar$sort.Agrega soporte para el uso de un proxy SOCKS5 para conectarse a MongoDB. Se pueden especificar las configuraciones de conexión SOCKS5 en la cadena de conexión o utilizando la propiedad MongoClientSettings.Socks5ProxySettings.
Agrega soporte para la interfaz
IAsyncEnumerable<T>en cursores y LINQ. Puedes usar la sintaxisawait foreachpara iterar asincrónicamente sobre los resultados de las query.Agrega soporte para big-endian a las clases
BinaryVectorReaderyBinaryVectorWriter.Se han realizado cambios en los subsistemas internos para la compatibilidad con el tiempo de espera de las operaciones del cliente (CSOT) en una próxima versión. Esperamos que estos cambios sean compatibles con versiones anteriores y no afecten el comportamiento del controlador actual. Contacte con MongoDB si experimenta alguno de los siguientes problemas:
Las operaciones se interrumpen inesperadamente o no se interrumpen cuando se esperaba
Retrasos o bloqueos inusuales en las llamadas a la base de datos
Diferencias en el comportamiento al cancelar comandos
Para obtener la mejor manera de encontrar soporte, consulte la página de Problemas y Ayuda. Proporcione los registros del controlador y, si es posible, una copia.
Para obtener más información sobre esta versión, consulte las 3.5 notas de la versión v en GitHub.
Novedades en 3.4
La versión del controlador 3.4 incluye las siguientes nuevas funcionalidades, mejoras y correcciones:
Añade el
Mql.Convert()método LINQ para convertir entre tipos al realizar agregaciones. Para obtener más información, consulte la sección $convert de la guía de LINQ.Agrega soporte para el método LINQ de
KeyValuePair.Create().Agrega el método
GeoNear()aggregation builder para construir una etapa de agregación$geoNear. Para ver ejemplos, consulta la referencia de $geoNear en el manual de MongoDB Server.Admite la conversión desde una interfaz a un tipo que implementa esa interfaz en consultas LINQ.
Admite el constructor
Dictionary(IEnumerable<KeyValuePair<TKey, TValue>> collection)en LINQ.Agrega las siguientes opciones para las consultas de MongoDB Search:
MatchCriteriaenSearchTextOptionspara establecer criterios de coincidencia para los términos pasados al método del operadorText().SynonymsenSearchPhraseOptionspara establecer el nombre de la definición de mapeo de sinónimos cuando se utiliza el método del operadorPhrase().
Para obtener más información sobre cómo realizar búsquedas en MongoDB, consulta la guía MongoDB Search.
Admite consultas LINQ después de convertir los objetos
IQueryable<Derived>enIQueryable<Base>.Corrige el comportamiento del operador MongoDB Search para utilizar serializadores configurados en lugar de serializadores predefinidos. Para utilizar el comportamiento anterior, establezca la siguiente opción:
SearchDefinition.UseConfiguredSerializers(false);
Para obtener más información sobre esta versión, consulte las 3.4 notas de la versión v en GitHub.
Novedades en 3.3
La 3.3 versión de driver incluye las siguientes funcionalidades:
Agrega un nuevo campo
NamespaceTypeque indica el tipo de objeto creado para los eventoscreateen la claseChangeStreamDocument. Para obtener más información sobre los flujos de cambios, consulta la guía Supervisar los cambios de datos.Añade las siguientes funcionalidades de encriptación en uso:
Soporte para la etapa de agregación $lookup
Una propiedad
ClientEncryptionOptionsque configura la vida útil de la caché de la llave de cifrado de datos
Para obtener más información sobre el cifrado en uso, consulta la guía de Cifrado en uso.
Agrega las siguientes funcionalidades de LINQ:
Compatibilidad con los métodos de agregación LINQ
SkipWhile()yTakeWhile(). Para más información, consulta las secciones Omitir por condición y Limitar por condición de la guía LINQ.Soporte para la expresión
$sigmoiden consultas LINQ.Compatibilidad con el uso de la sintaxis LINQ para acceder a cualquier clave en un diccionario que se serializa como una string, independientemente de su tipo de datos subyacente.
Agrega soporte para la etapa de agregación
$rankFusion, que habilita la puntuación de resultados basada en el ranking sobre los resultados combinados de múltiples pipelines.Añade soporte para $elemMatch consultas directamente a los valores proporcionando una sobrecarga del método
ElemMatch()que solo toma un parámetro de filtro. Para obtener más información, consulta Actualizar Arreglos en un Documento y Actualizar Arreglos en Muchos Documentos.Agrega soporte para utilizar el método
OfType<T>()y el operadorispara comprobar el tipo de un discriminador escalar.
Para obtener más información sobre esta versión, consulte las 3.3 notas de la versión v en GitHub.
Novedades en 3.2
La 3.2 versión de driver incluye las siguientes funcionalidades:
Agrega una nueva convención
ObjectSerializerAllowedTypesConventionque le permite especificar qué tipos se pueden serializar y deserializar mediante el serializador de objetos. Para obtener más información sobre las convenciones, consulta la Guía de convenciones.Agrega un nuevo constructor para la clase
EnumRepresentationConventionque le permite usar el parámetrotopLevelOnlypara especificar si la convención se aplica solo a las propiedades de enumeración o a todas las propiedades que incluyen colecciones de enumeraciones.Puedes crear una instancia de la clase
EnumRepresentationConventionusando el nuevo constructor, como se muestra en el siguiente ejemplo:EnumRepresentationConvention(BsonType representation, bool topLevelOnly); Optimiza las proyecciones del lado del cliente para recuperar solo los campos necesarios del servidor, en lugar de recuperar todos los campos y filtrarlos después.
Agrega las siguientes clases para admitir representaciones vectoriales binarias en MongoDB Vector Search:
BinaryVectorFloat32BinaryVectorInt8BinaryVectorPackedBit
Para obtener más información sobre MongoDB Vector Search con el driver .NET/C#, consulta la guía Ejecutar una query de búsqueda vectorial en MongoDB.
Agrega la propiedad
DocumentFormatalDateOnlySerializer. Esta propiedad permite personalizar la forma en que el controlador serializa los valores deDateOnly. Esta versión también agrega el atributo[BsonDateOnlyOptions()]para personalizar el comportamiento de serialización para los valoresDateOnlya nivel de propiedad. Para obtener más información, consulta la sección Serialización de DateOnly personalizada de la guía POCO.
Para obtener más información sobre esta versión, consulte las 3.2 notas de la versión v en GitHub.
Novedades en 3.1
La 3.1 versión de driver incluye las siguientes funcionalidades:
Se añaden nuevos serializadores predeterminados para colecciones inmutables en el espacio de nombres System.Collections.Immutable. El controlador ahora puede serializar
ImmutableArrayobjetos, y la serialización de otras colecciones inmutables es más eficiente en el uso de memoria.Añade el tipo
SearchIndexTypepara admitir la creación de índices de MongoDB Vector Search de forma programática. Para obtener más información, consulta la guía Índices de MongoDB Search y MongoDB Vector Search.Agrega soporte para el tipo de campo de token y expresiones de campos de array con los constructores de MongoDB Search para el operador
equals. Para obtener más información sobre el uso de MongoDB Search con el driver .NET/C#, consulta MongoDB Search.Agrega soporte para las siguientes consultas de búsqueda de MongoDB:
Uso del método del operador
Equals()en valoresnullyGuidUso del método del operador
In()en valoresGuid
Para obtener más información sobre estos métodos, consulte la sección Operadores y recolectores de búsqueda de MongoDB en la guía de MongoDB Search.
Agrega soporte para paginación secuencial en MongoDB Search.
Agrega soporte para nombres de host SRV válidos con menos de 3 partes.
Se agrega compatibilidad para los métodos
Exists,IsMissingyIsNullOrMissingen los filtros de la API de query de MongoDB.Añade soporte para la búsqueda vectorial Exact Nearest Neighbor (ENN). Para aprender más sobre la Búsqueda Vectorial ENN, consulta Ejecutar consultas de búsqueda vectorial en la documentación de MongoDB Search.
Agrega una opción de ordenación para operaciones de actualización y reemplazo. Este cambio permite establecer un orden de clasificación si varios documentos coinciden con su filtro al intentar actualizar o reemplazar un solo documento. Para aprender más, consulta las guías de Actualizar uno y Actualizar muchos.
Para obtener más información sobre esta versión, consulte las notas de la versión v.3.1
Novedades en 3.0
Advertencia
Cambios disruptivos en la versión v3.0
El3.0 controlador v contiene cambios importantes. Consulte Cambios importantes de la versión para obtener más 3.0 información.
La 3.0 versión de driver incluye las siguientes funcionalidades:
Añade la
MongoClientSettings.TranslationOptionsopción de conexión, que especifica las opciones para traducir consultas LINQ a la API de consultas. Consulte "Especificar opciones de conexión" para obtener más información.Añade compatibilidad con el
Halftipo, que representa un número de punto flotante de media precisión. Este tipo está disponible en .NET 5 y versiones posteriores. Para obtener más información sobre elHalftipo, consulte la página de referencia de la API Half Struct en MSDN.La interfaz
IMongoClienthereda la interfazIDisposable. Como resultado, la claseMongoClienty las demás clases que implementan la interfazIMongoClientcontienen una opciónDisp- Adds support for the ``sortque se pasa al método `update commands.ose()``, que elimina el cliente. Este método no elimina el clúster subyacente ni las conexiones al servidor MongoDB. Para eliminar el clúster y las conexiones, llame al métodoClusterRegistry.UnregisterAndDisposeCluster(). La implementación de la interfazIDisposablees experimental.Para obtener más información sobre la interfaz
IDisposabley el uso del métodoDispose(), consulte Patrón Dispose en MSDN.Añade compatibilidad para el tipo
DateOnly, que representa un valor de fecha sin un componente de tiempo. Esta tipología está disponible en .NET 6 y versiones posteriores. Para obtener más información sobre elDateOnlytipo, consulta la Estructura DateOnly. Página de referencia de API en MSDN.Añade soporte para el tipo
TimeOnly, que representa un valor de tiempo sin componente de fecha. Esta tipología está disponible en .NET 6 y versiones posteriores. Para aprender más información sobre el tipoTimeOnly, consulta la Estructura TimeOnly. Página de referencia de API en MSDN.Agrega soporte para la proyección implícita del lado del cliente al usar el método
Find(), el métodoSelect()o la etapa de agregaciónProject()con el proveedor LINQ3. En versiones anteriores del controlador, podía realizar proyección del lado del cliente con el proveedor LINQ3 solo después de llamar al métodoToEnumerable()oAsEnumerable().Para aprender a habilitar y usar la proyección del lado del cliente para un método de driver, seleccione la pestaña correspondiente:
// Enable client-side projection var findOptions = new FindOptions(); findOptions.TranslationOptions = new ExpressionTranslationOptions { EnableClientSideProjections = true }; var find = collection .Find(doc => doc.Id == 1, findOptions); .Project(doc => new { R = MyFunction(doc.Name) }); // Enable client-side projection var aggregateOptions = new AggregateOptions(); aggregateOptions.TranslationOptions = new ExpressionTranslationOptions { EnableClientSideProjections = true }; var queryable = collection .AsQueryable(aggregateOptions) .Where(doc => doc.Id == 1) .Select(doc => new { R = MyFunction(doc.Name) }); // Enable client-side projection var aggregateOptions = new AggregateOptions(); aggregateOptions.TranslationOptions = new ExpressionTranslationOptions { EnableClientSideProjections = true }; var aggregate = collection .Aggregate(aggregateOptions) .Project(doc => new { R = MyFunction(doc.Name) }); Tip
MongoClientSettings
Para habilitar la proyección del lado del cliente para todas las consultas en un cliente, establece la propiedad
TranslationOptionsde tu objetoMongoClientSettings, como se muestra en el siguiente ejemplo:clientSettings.TranslationOptions = new ExpressionTranslationOptions { EnableClientSideProjections = true }; Para obtener más información sobre el uso de la canalización de agregación con el controlador .NET/C#, consulte Operaciones de agregación.
Agrega una API
MongoClientpara operaciones de escritura masiva. Para obtener más información sobre las operaciones de escritura masiva, consulte Operaciones de escritura masiva.
Para obtener más información sobre esta versión, consulte las notas de la versión v.3.0
Novedades en 2.30
El 2.30 driver no introduce nuevas funcionalidades ni correcciones de errores. Su propósito es facilitar la migración a la versión v3.x del controlador .NET/C# marcando las API públicas que fueron eliminadas en la versión v3.0 como obsoletas.
Novedades en 2.29
La versión 2.29 de driver agrega compatibilidad con MongoDB Server versión 8.0 e incluye las siguientes nuevas funcionalidades:
Agrega soporte para la versión2 del protocolo de rango Queryable Encryption.
Añade compatibilidad con índices de rango para el cifrado consultable. Para más información sobre el cifrado consultable, consulte Cifrado consultable en el manual de MongoDB Server.
Para obtener más información sobre esta versión, consulte las notas de la versión v.2.29
Novedades en 2.28
Advertencia
Cambio disruptivo potencial en v2.28
Todos los componentes del driver de .NET/C# tienen nombres sólidos y concretos. Si su aplicación tiene dependencias que hacen referencia a varias versiones del .NET/C# Driver, debe crear redireccionamientos de enlaces para gestionar esas dependencias. Para más información, consulta Cambio disruptivo de la versión 2.28.0.
La 2.28 versión de driver incluye las siguientes funcionalidades:
Añade soporte para conversiones numéricas adicionales que involucren
Nullable<T>.Agrega compatibilidad con la opción
delegatedcuando se utiliza KMIP para CSFLE o Queryable Encryption.
Para obtener más información sobre esta versión, consulte las notas de la versión v.2.28
Novedades en 2.27
La 2.27 versión de driver incluye las siguientes funcionalidades:
Añade soporte para el operador de agregación
$sample.Implementa el método
Equals()para los serializadores en LINQ3.Garantiza que las preocupaciones de lectura y el nivel de confirmación de escritura (write concern) no se apliquen a los comandos del asistente de índice de búsqueda de MongoDB para evitar errores.
No se permite el uso del carácter de coma en
authMechanismPropertiesvalores de cadena de conexión cuando se usa el mecanismo de autenticaciónMONGODB-OIDC.Corrige un error de traducción que causaba un error durante la serialización con números de diferentes tamaños.
Agrega soporte para distribuciones de Linux que utilizan la biblioteca
libdl.so.2.
Para obtener más información sobre esta versión, consulte las notas de la versión v.2.27
Novedades en 2.26
La 2.26 versión de driver incluye las siguientes funcionalidades:
Se añadió el soporte para utilizar el método de agregación
SelectMany()en las etapas de agregaciónSelect()yProject().Se agregó soporte para llamadas
Dictionary.ContainsValue()en consultas LINQ.Se agregó soporte para concatenación de strings de tipos mixtos.
Se habilitó el uso de
cryptonativo en enlaceslibmongocrypt.Se agregó compatibilidad con la serialización de
MemoryReadOnlyMemoryestructuras y. Para obtener más información sobre la implementación de estos tipos, consulte la sección "Mejorar el rendimiento de la serialización de matrices" de la guía de serialización.Se agregó compatibilidad con el proveedor de identidad de GCP al usar el
MONGODB-OIDCmecanismo de autenticación. Para obtener más información,consulte GCP IMDS en la guía de mecanismos de autenticación empresarial.Se implementó la firma de paquetes NuGet.
Se implementaron reintentos de lectura y escritura a otras instancias de
mongoscuando es posible.
Novedades en 2.25
La 2.25 versión de driver incluye las siguientes funcionalidades:
Se agregó soporte para el mecanismo de autenticación
MONGODB-OIDCy la adquisición automática de tokens para el Proveedor de Identidad de Azure.Se agregó el nombre de la clase al mensaje de error informado cuando
BsonClassMapSerializerno puede localizar un creador coincidente.Se añadió un campo
LoggedStagespara mostrar el MQL ejecutado tras realizar una query LINQ.Se agregó compatibilidad para reemplazar el
"mongodb"nombre de servicio por uno personalizado mediante lasrvServiceNameopción de conexión. Para obtener más información, consulte la guía "Especificar opciones de conexión".Se mejoró el comportamiento de las operaciones de escritura masiva para evitar enumerar el parámetro de solicitudes más de una vez.