2011-10-11 10 views
13

Estoy tratando de usar $push en una consulta de actualización en mongodb, con el controlador C#.BsonValue y clases personalizadas en MongoDB C# Driver

El método Update.Push(...) requiere un nombre de cadena (está bien), y un BsonValue para ser 'presionado'. Aquí es donde me encuentro con problemas. Estoy tratando de enviar un tipo no simple a la matriz del campo.

Por ejemplo: { $push : { "arrayfield" : { "a" : 7, "b" : 12 } } }

Esto funciona bien en la consola de Mongo, pero no puedo encontrar la manera de hacer que mi objeto en un BsonValue. Intenté BsonValue.Create(myObjectInstance), pero eso me da un error al decir que el tipo .NET no puede asignarse a BsonValue.

¿Echo de menos algo simple?

Respuesta

14

sé dos enfoques:

  1. Update.PushWrapped<MyObject>("arrayfield", myObjectInstance); // C# controlador> = 1,0

  2. o convertir su clase para sí mismo a través de BsonValueToBsonDocument() método de extensión.

    Update.Push("arrayfield", myObjectInstance.ToBsonDocument());

+0

Terminé usando .ToBsonDocument(), pero el .PushWrapped es algo que estaba completamente inconsciente de, gracias por eso! – Redth

Cuestiones relacionadas