Al usar MongoDB, tengo problemas para agregar elemento en una matriz cuando la matriz es nula. AddToSet funciona como se esperaba si agrego el elemento desde la consola. Estoy usando el controlador oficial C# de 10gen.Actualizar con AddToSet sin actualizar el valor nulo con MongoDB C#
var query = Query.EQ("_id", objectId);
var itemDoc = item.ToBsonDocument();
//items is an array but currently null
var update = MongoDB.Driver.Builders.Update.AddToSet("items", itemDoc); // YUNoWork?
//somefield doesn't exist
var workingUpdate = MongoDB.Driver.Builders.Update.AddToSet("somefield", itemDoc); //works fine
var collection = DataBase.GetCollection<MyObject>(CollectionName);
collection.Update(query, update); // doesn't work
collection.Update(query, workingUpdate); // works
¿Este comportamiento es esperado? Si es así, ¿hay una forma más general de agregar elementos a una matriz?
El uso de BsonIgnoreIfNull para listas resuelve la desigualdad de impedancia entre las definiciones de clase C# y MongoDB. ¡Gracias! – HatAndBeard
Solo para aclararle a alguien más que vea esta respuesta, tendrá que limpiar sus datos existentes para que esto funcione. En otras palabras, si ya tiene un documento con una propiedad nula, deberá eliminar la propiedad o el documento. _Entonces_ esto funcionará la próxima vez que use AddToSet. Había agregado el atributo, pero todavía no funcionaba porque los datos ya se habían guardado con el valor nulo. – adam0101