Conozca las novedades en:
Novedades en 3.6
La versión del controlador 3.6 incluye las siguientes nuevas características, mejoras y correcciones:
Añade el
CreateVectorSearchIndexModelClase, una API fuertemente tipada para crear índices de búsqueda vectorial de MongoDB. Para obtener más información sobre esta API, consulte 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.Agrega un modo de compatibilidad con versiones anteriores para el tipo
TimeOnlypara leer correctamente documentos serializados por versiones del controlador anteriores a 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 soporte para las propiedades
DictionaryKeysyValuesen consultas LINQ.Agrega una sobrecarga del constructor
Decimal128para los tiposbyteyshortpara admitir 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
GetBitArray()asignaciones enBsonClassMapSerializer.DeserializeClass().Utiliza
KeyValuePairSerializerconsistentemente paraKeyValuePair.Evita el boxeo
RentedBufferen la claseDisposableSegment.Evita las 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 importantes en v3.5
El controlador MongoDB.NET/C# 3.5 contiene cambios importantes. Consulte Cambios importantes de la versión para obtener más 3.5 información.
La versión del controlador 3.5 incluye las siguientes nuevas características, mejoras y correcciones:
Añade compatibilidad experimental con consultas de prefijo, sufijo y subcadena de cifrado consultable. Estas funciones son inestables y su seguridad no está garantizada hasta su disponibilidad general (GA). Úselas solo en cargas de trabajo experimentales. Para obtener más información sobre QE, consulte Cifrado en uso.
Añade la clase CsfleSchemaBuilder al
MongoDB.Driver.Encryptionpaquete. Puede usar esta clase para crear esquemas JSON para el cifrado de 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 Cifrado en uso.
Agrega los siguientes métodos LINQ:
Median(): Calcula la mediana de una secuencia de valores.Percentile(): Calcula el percentil múltiple de una secuencia de valores.
Puede utilizar estos métodos para realizar cálculos como parte de las etapas de agregación
$groupy$setWindowFields.Añade nuevas sobrecargas de los métodos Ascending() y Descending() a la
SortDefinitionBuilderclase. Puedes usar estos métodos para ordenar elementos por valor al usar el$sortoperador de actualización.Se añade compatibilidad con el uso de un5 proxy SOCKS para conectarse a MongoDB. Puede especificar5 la configuración de conexión de SOCKS en la cadena de conexión o mediante la propiedad MongoClientSettings.Socks5ProxySettings.
Añade compatibilidad con la interfaz
IAsyncEnumerable<T>en cursores y LINQ. Puedes usar la sintaxisawait foreachpara iterar asincrónicamente los resultados de la consulta.Agrega soporte 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 de 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 características, 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
KeyValuePair.Create().Añade el
GeoNear()método de generación de agregaciones para construir una$geoNearetapa de agregación. Para ver ejemplos, consulte 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 búsqueda de MongoDB:
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 consultas de búsqueda de MongoDB, consulte la guía de búsqueda de MongoDB.
Admite consultas LINQ después de convertir objetos
IQueryable<Derived>enIQueryable<Base>.Se corrige el comportamiento del operador de búsqueda de MongoDB para usar serializadores configurados en lugar de predefinidos. Para usar el comportamiento anterior, configure 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 versión del controlador 3.3 incluye las siguientes características nuevas:
Añade un nuevo
NamespaceTypecampo que indica el tipo de objeto creado paracreateeventos en laChangeStreamDocumentclase. Para obtener más información sobre los flujos de cambios, consulte la guía Monitorizar cambios en los datos.Agrega las siguientes funciones de cifrado 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
SkipWhile()métodosTakeWhile()de agregación LINQ y. Para obtener más información, consulte las secciones "Omitir en una condición" y "Límite en una condición" de la guía de LINQ.Soporte para la expresión
$sigmoiden consultas LINQ.Soporte para usar la sintaxis LINQ para acceder a cualquier clave de diccionario que esté serializada como una cadena, independientemente de su tipo de datos subyacente.
Agrega soporte para la etapa de agregación
$rankFusion, que permite la puntuación de resultados basada en rango en resultados combinados de múltiples canales.Añade compatibilidad con consultas $elemMatch directamente sobre valores mediante una sobrecarga del
ElemMatch()método que solo acepta un parámetro de filtro. Para obtener más información, consulte Actualizar matrices en un documento y Actualizar matrices en varios documentos.Agrega soporte para usar el método
OfType<T>()y el operadorispara verificar 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 versión del controlador 3.2 incluye las siguientes características nuevas:
Añade una nueva
ObjectSerializerAllowedTypesConventionconvención que permite especificar qué tipos puede serializar y deserializar el serializador de objetos. Para obtener más información sobre las convenciones, consulte 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.Puede crear una instancia de la clase
EnumRepresentationConventionutilizando 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 requeridos del servidor, en lugar de recuperar todos los campos y luego filtrarlos.
Agrega las siguientes clases para admitir representaciones de vectores binarios en MongoDB Vector Search:
BinaryVectorFloat32BinaryVectorInt8BinaryVectorPackedBit
Para obtener más información sobre MongoDB Vector Search con el controlador .NET/C#, consulte la guía Ejecutar una consulta de búsqueda vectorial de MongoDB.
Añade la
DocumentFormatpropiedadDateOnlySerializera. Esta propiedad permite personalizar la forma en que el controlador serializaDateOnlylos valores. Esta versión también añade el[BsonDateOnlyOptions()]atributo para personalizar el comportamiento de serialización deDateOnlylos valores a nivel de propiedad. Para obtener más información, consulte la sección "Serialización personalizada de solo fecha" de la guía de 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 versión del controlador 3.1 incluye las siguientes características nuevas:
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
SearchIndexTypetipo para permitir la creación de índices de búsqueda vectorial de MongoDB mediante programación. Para obtener más información, consulte la guía Búsqueda de MongoDB e Índices de búsqueda vectorial de MongoDB.Añade compatibilidad con el tipo de campo de token y las expresiones de campo de matriz con los constructores de MongoDB Search para el
equalsoperador. Para obtener más información sobre el uso de MongoDB Search con el controlador .NET/C#, consulte 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 recopiladores de búsqueda de MongoDB de la guía de búsqueda de MongoDB.
Agrega soporte para paginación secuencial en MongoDB Search.
Agrega soporte para nombres de host SRV válidos con menos de 3 partes.
Agrega soporte para los métodos
Exists,IsMissingyIsNullOrMissingen los filtros de la API de consulta 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.
Añade una opción de ordenación para las operaciones de actualización y reemplazo. Este cambio permite establecer un orden de ordenación si varios documentos coinciden con el filtro al intentar actualizar o reemplazar un solo documento. Para obtener más información, consulte las guías "Actualizar uno" y "Actualizar varios".
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 importantes en 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 versión del controlador 3.0 incluye las siguientes características nuevas:
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
IDisposableinterfaz y el uso delDispose()método, consulte Dispose Pattern en MSDN.Añade compatibilidad con el
DateOnlytipo, que representa un valor de fecha sin componente de hora. Este tipo está disponible en .NET 6 y versiones posteriores. Para obtener más información sobre elDateOnlytipo, consulte la página de referencia de la API de DateOnly Struct. en MSDN.Añade compatibilidad con el
TimeOnlytipo, que representa un valor de tiempo sin componente de fecha. Este tipo está disponible en .NET 6 y versiones posteriores. Para obtener más información sobre elTimeOnlytipo, consulte la página de referencia de la API TimeOnly Struct. en MSDN.Añade compatibilidad con 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, la proyección del lado del cliente con el proveedor LINQ3 solo se podía realizar 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 controlador, 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, configure la propiedad
TranslationOptionsde su 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.
Añade una
MongoClientAPI para 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 controlador 2.30 no introduce nuevas funciones ni corrige errores. Su objetivo es facilitar la migración a la versión3.x del controlador .NET/C# marcando como obsoletas las API públicas eliminadas en la versión3.0.
Novedades en 2.29
La versión del controlador 2.29 agrega soporte para la versión 8.0 de MongoDB Server e incluye las siguientes características nuevas:
Agrega soporte para v2 del protocolo de rango de cifrado consultable.
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 potencial de ruptura en v2.28
Todos los componentes del controlador .NET/C# tienen nombres seguros. Si su aplicación tiene dependencias que hacen referencia a varias versiones del controlador .NET/C#, debe crear redirecciones de enlace para administrar dichas dependencias. Para obtener más información, consulte 2.28.0 el cambio importante de la versión.
La versión del controlador 2.28 incluye las siguientes características nuevas:
Agrega soporte para conversiones numéricas adicionales que involucran
Nullable<T>.Agrega soporte para la
delegatedopción al usar KMIP para CSFLE o cifrado consultable.
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 versión del controlador 2.27 incluye las siguientes características nuevas:
Agrega soporte para el operador de agregación
$sample.Implementa el método
Equals()para serializadores en LINQ3.Asegura que las preocupaciones de lectura y escritura no se apliquen a los comandos del Ayudante de índice de búsqueda de MongoDB para evitar errores.
No permite el uso del carácter de coma en los valores de la cadena de conexión
authMechanismPropertiescuando se utiliza el mecanismo de autenticaciónMONGODB-OIDC.Corrige un error de traducción que causaba un error durante la serialización que involucraba 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 versión del controlador 2.26 incluye las siguientes características nuevas:
Se agregó soporte para usar el método de agregación
SelectMany()dentro de las etapas de agregaciónSelect()yProject().Se agregó soporte para llamadas
Dictionary.ContainsValue()en consultas LINQ.Se agregó soporte para la concatenación de cadenas 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 en otras instancias
mongoscuando fue posible.
Novedades en 2.25
La versión del controlador 2.25 incluye las siguientes características nuevas:
Se agregó compatibilidad con 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 agregó un campo
LoggedStagespara mostrar el MQL ejecutado después de realizar una consulta 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.