如果我想用POCO读写mongo数据
public class Thingy
{
public string Foo {get;set;}
}
...
coll.Insert(new Thing(Foo = "hello"));
当我回读时,我得到了一个失败的消息,说_id是一个意外的属性(事实就是这样).然后我在类中添加了一个名为_id的字段.现在插入不起作用,说明_id字段不能为空.try 过的BsonIgnoreIfNull属性无效.
如果我想用POCO读写mongo数据
public class Thingy
{
public string Foo {get;set;}
}
...
coll.Insert(new Thing(Foo = "hello"));
当我回读时,我得到了一个失败的消息,说_id是一个意外的属性(事实就是这样).然后我在类中添加了一个名为_id的字段.现在插入不起作用,说明_id字段不能为空.try 过的BsonIgnoreIfNull属性无效.
插入一个对象时,如果它没有_id
字段,那么驱动程序会添加一个字段,并将其设置为12字节的MongoDB ObjectId值.
您只需向POCO中添加一个Id
属性,它将从_id
反序列化:
public class Thingy
{
public ObjectId Id { get; set; }
}
或者,如果您想将另一个属性委托给映射到_id
,则可以用BsonIdAttribute
装饰它,如下所示:
[BsonId]
public ObjectId MyKey { get; set; }
_id
字段不必是MongoDB ObjectId
,您可以将其设置为任何数据类型的任何值(数组除外),它只需要在集合中是唯一的.