Было бы довольно легко сделать это с 2 последовательными обновлениями:
myCollection.Insert(a,SafeMode.False);
myCollection.Update(Query.EQ("_id",a._id), Update.Set("Foo",a.Foo))
Вы должны использовать SafeMode.False, чтобы гарантировать, что если в коллекции существует, вставка не вызоветисключение.
Сначала вы могли бы подумать, что порядок этих операций важен, но это не так: если 2 выполняется первым, независимо от результата, 1 молча завершится ошибкой.
Однако я не наденупонятия не имею, как использовать метод save для выполнения этой директивы.