我有一個MongoDB保存(C#驅動程序)的奇怪情況。我正在保存一個現有的文檔(關鍵是保存在BsonDocument內)。我的保存聲明如下所示:MongoDB保存並不刪除預先存在的元素
SafeModeResult result = moleculeCollection.Save(moleculeDoc, SafeMode.True);
其中moleculeDoc是BsonDocument。分子文檔中保存的元素可能會有所不同。有時數據庫中現有文檔中的元素將被刪除,因爲保存的moleculeDoc BsonDocument不再包含它們。
問題是,成功後保存了一些元素保留在數據庫保存的文檔中,即使它們不存在保存的BsonDocument內。當我第二次保存時,這些元素通常會消失。
我仔細眼揉成團的保存之前BsonDocument詳細,並且絕對不包含保存之後出現的某些元素(但沒有之前保存數據庫持有的文檔中存在。
這裏是一個保存文檔的一個例子:
{
"_id": {
"$binary": "qAvZU8AzqES1fv0OL9GaBw==",
"$type": "03"
},
"title": "Url 1a",
"mediatype": "url",
"modifieddate": "Wed, 09 Nov 2011 11:56:57 GMT",
"filename": "iphone.pdf",
"contenttype": "application/pdf",
"weburi": "ffff"
}
注意,「文件名」元素並不是被保存在BsonDocument內,但它保存後留在地方,雖然已經在之前的數據庫保存。
一個奇怪的方面是,它會在SECOND保存後刪除這些'鬼'元素。
任何人都可以對此有所瞭解嗎?
我確定mongodb save是一個upsert(文檔級別而不是更新中的字段級別)。如果id存在或者創建新文件,它將覆蓋整個文件。所以無論新文檔中的字段只存在於保存的文檔中,分子類型是什麼?是MongoCollection嗎? – RameshVel