_id与mongoDB中的_Id

时间:2014-11-06 04:59:55

标签: c# mongodb duplicates mongodb-query

在这个MSDN sample中,当我第二次使用" author"和"标题"

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检测到错误&#39;&#39;。 (响应是{&#34;错误&#34;:&#34; E11000重复键错误索引:test.test。$ id dup key:{:7}&#34;,&# 34;代码&#34;:11000,&#34; n&#34;:0,&#34; connectionId&#34;:4,&#34; ok&#34;:1.0})。

基本上,&#34; _id&#34;再次获得价值 7 。我认为BsonValue.Create(BsonType.ObjectId)应该创建一个唯一的24个字符的十六进制字符串。

1 个答案:

答案 0 :(得分:2)

这里有两件不同的事情。要创建新的ObjectId,请使用:

 var id = ObjectId.GenerateNewId();

你拥有的是"BSON Type"枚举的常量值,对于&#34; ObjectId&#34;常数是7.

所以"create" an ObjectId。你现在所做的就是调用该类型的常量值。