2011-10-11 7 views
13

Próbuję użyć $push w kwerendzie aktualizacji w mongodb, ze sterownikiem C#.BsonValue i niestandardowe klasy w MongoDB C# Driver

Metoda Update.Push(...) wymaga nazwy napisu (to w porządku), a BsonValue do "pchnięcia". Tutaj napotykam problemy. Próbuję przenieść nietypowy typ do tablicy pól.

Na przykład: { $push : { "arrayfield" : { "a" : 7, "b" : 12 } } }

To działa prawidłowo w konsoli Mongo, ale nie mogę dowiedzieć się, jak sprawić, by mój obiekt do BsonValue. Próbowałem już BsonValue.Create(myObjectInstance), ale daje mi to błąd mówiąc, że typ .NET nie może być odwzorowany na BsonValue.

Czy brakuje mi czegoś prostego?

Odpowiedz

14

Znam dwa podejścia:

  1. Update.PushWrapped<MyObject>("arrayfield", myObjectInstance); // C# sterownik> = 1,0

  2. Albo zamienić klasę BsonValue siebie poprzez ToBsonDocument() metodę rozszerzenia.

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

+0

skończyło się używając .ToBsonDocument(), ale .PushWrapped jest czymś byłem zupełnie nieświadomy, dzięki za to! – Redth