2011-09-23 77 views
1

Mongo版本1.8.2。部分使用c#驱动程序的mongodb upsert?

假设我有一个像

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仍然会保留它是(也许是非零......)

我该如何实现这个部分upsert?

非常感谢。

回答

3

这将是很容易与连续2个更新做到这一点:你必须使用SafeMode.False确保如果一个集合中存在,刀片将不会产生异常

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

起初,你会认为这些操作的顺序很重要,但它不是:如果2先执行,无论结果如何,1都会默默地失败。

但是我不知道如何使用save方法来做这个direclty。

相关问题