可以說我有一個對象,該對象僅包含一個數組c。與位置運算符#MongoDB的UPSERT發出
public class A
{
[BsonId]
public ObjectId Id;
public int[] arr;
public A()
{
arr = new [5];
}
}
當我想以更新標識陣列中的某些指標,
和ID couldn不會被發現我想插入新的對象到數據庫,並且當它被插入時
它假設有這個提供的Id和一個帶有所提供索引值的arr。
到目前爲止好,但是,它不會發生。
//receiving ObjectId id, int input_index, int input_value
var filter = Builders<A>.Filter.Eq(x => x.Id, id);
var options = new UpdateOptions()
{
IsUpsert = true
};
var update = Builders<A>.Update.Set(x => x.arr[input_index], input_value);
//executing the query....
相反,Id被插入行,但該陣列是變而不是數組與所提供的值的一個int值。
這是一個已知的錯誤嗎?反正有嗎?
TIA
Refrence對老年人的問題,但它是2年前: here
編輯
即時通訊註冊默認丘壑的ARR:
if (!BsonClassMap.IsClassMapRegistered(typeof (A)))
{
BsonClassMap.RegisterClassMap<A>(map =>
{
map.AutoMap();
map.SetIgnoreExtraElements(true);
map.GetMemberMap(c => c.arr)
.SetDefaultValue(new int[5] {0, 0, 0, 0, 0});
});
}
也試過添加標籤而不是registerMap:
[BsonDefaultValue(new int[5] {0, 0, 0, 0, 0})]
[BsonIgnoreIfDefault]
public int[] arr {set;get;}
和Im接收:
反序列化 類DatabaseManager.MongoEntities.A的ARR屬性時發生錯誤:無法反序列化 'INT []' 從 BsonType '文檔'。
我假設如果數組中沒有5個元素,那麼只有那些存在的元素被填充,並且忽略任何多餘元素? – BanksySan