我有一个类,我想在将对象保存到MongoDB时跳过这个字段。
public class Person
{
public string name;
public string ignorable; // I don't want this one to be saved to the db
}
我知道BsonIgnore
属性,但在序列化要发送到客户端javascript应用程序的对象时也会忽略该属性。
我使用官方的C#驱动程序并直接调用此扩展方法对序列化为json的对象:
MongoDB.Bson.BsonExtensionMethods.ToJson()
答案 0 :(得分:1)
您可以编写自己的序列化程序&解串器
public class PersonSerialzer : IBsonSerializer
{
public object Deserialize(BsonReader bsonReader, Type nominalType, IBsonSerializationOptions options)
{
....
}
public object Deserialize(BsonReader bsonReader, Type nominalType, Type actualType, IBsonSerializationOptions options)
{
....
}
public IBsonSerializationOptions GetDefaultSerializationOptions()
{
....
}
public void Serialize(BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options)
{
var person = (Person)value;
bsonWriter.WriteStartDocument();
bsonWriter.WriteString("name", person.name);
//bsonWriter.WriteString("ignorable", person.ignorable); ignore for serialize
bsonWriter.WriteEndDocument();
}
}
Deserialize
方法很简单,就像Serialize
方法一样。
然后通过
注册var ser = new PersonSerialzer();
BsonSerializer.RegisterSerializer(typeof(Person), ser);
答案 1 :(得分:1)
另一个解决方案:
您可以将实体类对象强制转换为BsonDocument
并调用remove
方法以删除您不需要的字段。
最重要的是,您应该在Save
对象上调用MongoCollection
方法,以便只更新包含的字段。