我有以下文檔。C#mongodb字段名稱重複解決方法
{
name: 'XYZ',
SubscriptionPeriods" : [{
"_id" : null,
"PeriodCode" : "1M",
"Fee" : "100"
}, {
"_id" : null,
"PeriodCode" : "3M",
"Fee" : "300"
}]
}
管理員可以更新訂閱期限;他可以刪除現有時間段和/或在同一更新中添加新時間段。最初我以爲我可以通過在一個Update(...)中的SubscriptionPeriods元素上執行PullAll(...)和PushAll(...)來實現此目的。但事實證明,mongodb在Update(...)中不接受兩次字段。我可以在兩個不同的Update(...)中完成PullAll(...)和PushAll(...)。但是我沒有采取這種方法,因爲如果有人試圖在PullAll()和PushAll()之間讀取SubscriptionPeriods,他將得到一個空的SubscriptionPeriods,這是不可接受的。 所以我想出了這個;我在一次更新中創建了另一個名爲SubscriptionPeriods1的元素,並在另一次更新中將其重命名爲SubscriptionPeriod。這看起來正在工作。但我在想,如果我在這裏忽略任何東西!我感謝MongoDB專家對我的任何評論!
謝謝。有效。實際上,我確實嘗試了Set(...),但失敗時出現錯誤,提示'Array不能位於bson文檔的根目錄'。我使用了Set(「ArrayElementName」,列表 .ToBsonDocument())。我認爲這是ToBsonDocument(),抱怨說'數組不能在根。我沒有意識到這一點,並在解決重命名(...)之前繼續嘗試其他各種選擇。儘管如此,BsonArray作爲Set的第二個參數可行! –
user1163459
@ user1163459:不客氣。 –