使用MongoDB C#驱动程序:Wrapped还是Un-Wrapped?

时间:2012-10-12 16:21:18

标签: c# mongodb

我正在使用MongoDB C#驱动程序构建一些更新语句。 The C# API包括Builder命名空间中的Wrapped和“Un-Wrapped”方法。

从表面上看,它们似乎因泛型不同而不必使用BSON包装。但是,两种方法类型都允许我传入非Bson-Wrapped参数。这两者之间是否存在功能差异?

例如(使用驱动程序v1.2),以下是Update.Set的两种用法:

var myCollection = database.GetCollection<MyObject>(typeof(MyObject).Name);

myCollection.Update(
  Query.EQ( "_id", myId ),
  Update.Set( "Message", "My message text"));

// And now the same call with "Wrapped" method
myCollection.Update(
  Query.EQ( "_id", myId ),
  Update.SetWrapped( "Message", "My message text"));

这两个电话有什么区别?如果只是语法糖 - 为什么需要一个Wrapped版本?

1 个答案:

答案 0 :(得分:5)

设置字符串值没有区别。使用复杂类型时需要使用包装的方法:类,列表等(不是BsonValue)。他们只是正确地将对象转换为BsonValue类型。

小例子:

使用Set,您无法执行以下操作:

var item = new MyDemo();
Update.Set("Item", item)

您必须使用Wrapped方法或ToBsonDocument()扩展名:

var item = new MyDemo();
Update.SetWrapped("Item", item)

就是这样!

一个注意事项,mongodb周围的驱动程序和大多数部分都是开源的。所以look at :)

并不是什么大问题