2011-10-11 27 views
13

我試圖在使用c#驅動程序的MongoDB更新查詢中使用$pushMongoDB中的BsonValue和自定義類C#驅動程序

Update.Push(...)方法需要一個字符串名稱(很好),並且BsonValue被'推送'。這是我遇到問題的地方。我試圖推動一個非簡單類型的字段的數組。

例如:{ $push : { "arrayfield" : { "a" : 7, "b" : 12 } } }

這個作品在蒙戈控制檯很好,但我無法弄清楚如何使我的對象到BsonValue。我試過BsonValue.Create(myObjectInstance),但是這給了我一個錯誤,說.NET類型不能映射到BsonValue。

我是否缺少一些簡單的東西?

回答

14

我知道兩種方法:

  1. Update.PushWrapped<MyObject>("arrayfield", myObjectInstance); // C#驅動程序> = 1.0

  2. 或通過ToBsonDocument()擴展方法類自己轉換爲BsonValue

    Update.Push("arrayfield", myObjectInstance.ToBsonDocument());

+0

我結束了使用.ToBsonDocument(),但.PushWrapped是我是完全不知道的,感謝您的! – Redth