MongoDB c # Update.PushWrapped, как его использовать? - PullRequest
2 голосов
/ 11 октября 2011

Как я могу вставить элемент в массив? Я вижу, что могу вставить только базовое значение (String, Int32, Int64, Boolean), но не могу вставить в массив INSTANCE пользовательского класса.

//in this way, it work:
var myPlayer = new i_Player();
this.mongo_collection.FindAndModify(
Query.EQ("_id",ID),
SortBy.Ascending("_id"),
Update.PushWrapped<i_Player>("_player", myPlayer),
true
);

// in this way, don't work because i_Player is not an BsonValue but is my CLASS!
var myPlayer = new i_Player();
this.mongo_collection.FindAndModify(
Query.EQ("_id",ID),
SortBy.Ascending("_id"),
Update.Push("_player", myPlayer),
true
);

1 Ответ

2 голосов
/ 12 октября 2011

PushWrapped идет с драйвером 1.0 (кажется) и просто конвертирует ваш класс в BsonDocument:

Update.PushWrapped<i_Player>("_player", myPlayer);

В случае, если вы используете Update.Push, вам нужно сделать это вручную:

Update.Push("_player", myPlayer.ToBsonDocument()); 

Я использую ToBsonDocument() для преобразования какого-либо объекта класса в BsonValue.

Итак, просто выберите, что вам больше нравится ..

...