5
MongoDBを使用して、配列がnullのときにen要素を配列に追加する際に問題があります。 AddToSetは、コンソールからアイテムを追加すると、正常に機能します。私は10genの公式のC#ドライバを使用しています。MongoDBでnull値を更新していないAddToSetでの更新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
この現象は予期しないものですか?もしそうなら、より一般的な方法で配列に項目を追加できますか?
リストにBsonIgnoreIfNullを使用すると、C#クラス定義とMongoDB間のインピーダンスの不一致が解決されます。ありがとう! – HatAndBeard
この回答を見る他の誰かを明確にするには、これが機能するために既存のデータを整理する必要があります。言い換えれば、ヌルプロパティを持つドキュメントがすでにある場合は、そのプロパティまたはドキュメントを削除する必要があります。 _これで、次回AddToSetを使用したときに動作します。私はその属性を追加しましたが、データが既にnullで保存されていたので、それでも機能しませんでした。 – adam0101