2014-11-06 193 views
0

在這種MSDN sample,當我跑了它的第二次瓦特/不同的「作者」的價值觀和「稱號」_id與_id MongoDB中

using (mongo.RequestStart(db)) 
{ 
    var collection = db.GetCollection<BsonDocument>("books"); 

    BsonDocument = new BsonDocument() 
     .Add("_id", BsonValue.Create(BsonType.ObjectId)) 
     .Add("author", "Ernest Hemingway") 
     .Add("title", "For Whom The Bell Tolls"); 

     collection.Insert(book); 
} 

我得到這個錯誤: 附加信息:WriteConcern檢測一個錯誤 ''。 (響應爲{「err」:「E11000重複密鑰錯誤索引:test.test. $ id dup key:{:7}」,「code」:11000,「n」:0,「connectionId」 「ok」:1.0})。

基本上,「_id」再次獲得值。我認爲BsonValue.Create(BsonType.ObjectId)應該創建一個唯一的24個字符的十六進制字符串。

回答

2

這裏有兩件不同的事情。要創建一個新的ObjectId然後使用:

var id = ObjectId.GenerateNewId(); 

你有什麼是對"BSON Type"的枚舉,這對於一個「的ObjectId」是恆定的數字是7

所以"create" an ObjectId的恆定值。你現在正在做的是調用該類型的常量值。