не могу привести ModifiedDocument из FindAndModify в MongoDb CSharp - PullRequest
2 голосов
/ 17 января 2012

Код ниже работает, но последние две строки явно "взломаны".Это единственная вещь, которую я получил до сих пор:

var collection = _database.GetCollection<KeyValueDocument>(KeyValueDocumentCollectionName);

var query = Query.And(Query.EQ("KeyName", keyName));
var sortBy = SortBy.Ascending("KeyName");
var update = Update.Inc("KeyValue", adjustmentAmount);
var result = collection.FindAndModify(query, sortBy, update, true);

var newValue = result.ModifiedDocument.Elements.Last().Value;
return Int32.Parse(newValue.RawValue.ToString());                        

Проблема в том, что я не могу привести результат.При отладке я ясно вижу, что все три свойства KeyValueDocument присутствуют с правильными значениями.И я вижу коллекцию «Элементы», последняя из которых имеет свойство, которое было увеличено.При сворачивании к свойству «RawValue» ToString анализируется в Int.Вот так!

Но ... должен быть лучший способ!Я использую C # и официальный драйвер 10gen.

Пожалуйста, помогите, если можете, Спасибо!Travis

1 Ответ

2 голосов
/ 17 января 2012

Я не уверен, как выглядит ваш класс KeyValueDocument, но при условии, что он имеет свойства KeyName и KeyValue, вы можете написать его так:

// initialize query, sortBy and update as you proposed
var result = collection.FindAndModify(query, sortBy, update, true);
var modifiedDocument = result.GetModifiedDocumentAs<KeyValueDocument>();
return modifiedDocument.KeyValue; // I'm assuming KeyValue is of type int
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...