Частичное использование mongodb с помощью драйвера c #? - PullRequest
1 голос
/ 23 сентября 2011

Монго версия 1.8.2.

Предположим, у меня есть класс, подобный

public class Acc
{
    public int _id { get; set; } 
    public int? Foo { get; set; } 
    public int? Bar{ get; set; }
}

Acc a = new Acc
{ 
    _id = 1,
    Foo = 3
};

Я бы хотел позвонить

myCollection.Save(a), 

такой, что

  • если его не существует, его вставляют (пока просто)
  • если он существует, Foo обновляется, но, но Bar остается тем, чем он является (возможно, ненулевым ...)

Как мне добиться этого частичного упадка?

Большое спасибо.

1 Ответ

3 голосов
/ 24 сентября 2011

Было бы довольно легко сделать это с 2 последовательными обновлениями:

myCollection.Insert(a,SafeMode.False);
myCollection.Update(Query.EQ("_id",a._id), Update.Set("Foo",a.Foo))

Вы должны использовать SafeMode.False, чтобы гарантировать, что если в коллекции существует, вставка не вызоветисключение.

Сначала вы могли бы подумать, что порядок этих операций важен, но это не так: если 2 выполняется первым, независимо от результата, 1 молча завершится ошибкой.

Однако я не наденупонятия не имею, как использовать метод save для выполнения этой директивы.

...