我正在尝试在mongodb中使用c#驱动程序在更新查询中使用$push
。
Update.Push(...)
方法需要一个字符串名称(没关系),并且BsonValue需要“推送”。这是我遇到问题的地方。我正在尝试将非简单类型推送到字段的数组。
例如:{ $push : { "arrayfield" : { "a" : 7, "b" : 12 } } }
这在Mongo控制台中工作正常,但我无法弄清楚如何将我的对象变成BsonValue。我试过BsonValue.Create(myObjectInstance)
但是这给了我一个错误,说明.NET类型无法映射到BsonValue。
我错过了一些简单的东西吗?
答案 0 :(得分:14)
我知道两种方法:
Update.PushWrapped<MyObject>("arrayfield", myObjectInstance);
// c#driver&gt; = 1.0
或者通过BsonValue
扩展程序将您的课程转换为ToBsonDocument()
。
Update.Push("arrayfield", myObjectInstance.ToBsonDocument());