Utilizzando MongoDB, ho difficoltà ad aggiungere un elemento a una matrice quando l'array è nullo. AddToSet funziona come previsto se aggiungo l'elemento dalla console. Sto usando il driver C# ufficiale da 10gen.Aggiornamento con AddToSet che non aggiorna il valore nullo 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
È questo comportamento previsto? In tal caso, c'è un modo più generale per aggiungere elementi a un array?
L'utilizzo di BsonIgnoreIfNull per gli elenchi risolve il disadattamento di impedenza tra le definizioni di classe C# e MongoDB. Grazie! – HatAndBeard
Giusto per chiarire per chiunque altro veda questa risposta, dovrai pulire i dati esistenti affinché funzioni. In altre parole, se hai già un documento con una proprietà nulla, dovrai eliminare la proprietà o il documento. _Quindi_ questo funzionerà la prossima volta che usi AddToSet. Avevo aggiunto l'attributo, ma non funzionava ancora perché i dati erano già stati salvati con il null. – adam0101