我正在使用MongoDB C#驱动程序构建一些更新语句.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"));
Run Code Online (Sandbox Code Playgroud)
这两个电话有什么区别?如果只是语法糖 - 为什么需要一个Wrapped版本?
设置字符串值没有区别.使用复杂类型时需要使用包装方法:类,列表等(不是BsonValue).他们只是正确地将对象转换为BsonValue类型.
小例子:
使用Set,您无法执行以下操作:
var item = new MyDemo();
Update.Set("Item", item)
Run Code Online (Sandbox Code Playgroud)
您必须使用Wrapped方法或ToBsonDocument()扩展:
var item = new MyDemo();
Update.SetWrapped("Item", item)
Run Code Online (Sandbox Code Playgroud)
而已!
一个注意事项,mongodb周围的驱动程序和大多数部分都是开源的.所以看看 :) 没什么大不了的
| 归档时间: |
|
| 查看次数: |
1131 次 |
| 最近记录: |