在这个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个字符的十六进制字符串。
答案 0 :(得分:2)
这里有两件不同的事情。要创建新的ObjectId,请使用:
var id = ObjectId.GenerateNewId();
你拥有的是"BSON Type"枚举的常量值,对于&#34; ObjectId&#34;常数是7.
所以"create" an ObjectId。你现在所做的就是调用该类型的常量值。