db.collection('collectionName', function(err, collection) {
collection.insert(data);
console.log(data._id); // <- The mongodb id is now set on the item
});
public static TId GetId<TId>(this BsonDocument document) where TId : struct
{
if (document == default(BsonDocument))
{
throw new ArgumentNullException("document");
}
var id = document["_id"];
object idAsObject;
if (id.IsGuid)
{
idAsObject = (object)id.AsGuid;
}
else if (id.IsObjectId)
{
idAsObject = (object)id.AsObjectId;
}
else
{
throw new NotImplementedException(string.Format("Unknown _id type \"{0}\"", id.BsonType));
}
var idCasted = (TId)idAsObject;
return idCasted;
}
class BsonID
{
[BsonId]
public ObjectId Id { get; set; }
}
var document = new BsonDocument {
{"_id", new BsonID().Id },
{ "code", dr.Cells["code"].Value.ToString() },
{ "name", dr.Cells["name"].Value.ToString() },
};
var customers = _database.GetCollection<BsonDocument>("Customers");
customers.InsertOne(document);
var id = document.ElementAt(0).Value.ToString();
8条答案
按热度按时间v2g6jxz61#
Insert
方法自动设置声明为模型的BSON ID的属性。如果声明如下...
..。则在将对象插入集合后,
Id
字段将包含该对象的默认(新的、唯一的)BSON ID:uinbv5nw2#
当您将对象插入MongoDB时,Mongo会使用内部ID更新该对象。
所以如果
然后当我们将数据对象插入到数据库中时
mrwjdhj33#
如上面的注解所示,使用以下命令在模型中添加文件ID
使用:
然后,当您插入对象时,mongo会将文档的ID返回到模型的文件ID中。
ctzwtxfj4#
如果您知道ID的类型,则可以执行以下操作:
按如下方式使用它:
尽管如此,你还是应该有一个专门的属性,就像在选择的答案中一样。
iyfamqjs5#
在持久化之前,我要将定制类型
T
转换为BsonDocument
。T
有一个属性ID:当我调用
ToBsonDocument()
时,Id
字段填充了ObjectId
,并将其推送到Mongo DB。它在代码中自己创建ID,而不是委托Mongo DB来创建它。但这对我来说已经足够了。
js4nwp546#
o3imoua47#
2021:如果您正在使用带有C#9
record
s的MongoDB,您可以使用此黑客来获取插入的id:其中,
EntityBase
是具有id
字段的所有文档的基本实体。或者只是不使用泛型。kb5ga3dv8#
Class.Type as a BsonDocument而不是真正的Class.Type可能是导致此问题的常见原因:
例如:
不