如何在MongoDB中自动插入默认值或更新忽略

时间:2011-10-20 04:38:52

标签: c# mongodb

我遇到了使用Upsert操作的问题。

我在表中有两个日期字段,“已创建”和“已更新”,我使用更新操作,当一条记录不存在时执行INSERT操作,否则执行UPDATE操作。

第一次插入时,“创建”字段和“更新”字段都自动设置当前日期,下次更新时,“创建”字段忽略,更新“更新”字段。

但我不能在一个声明中这样做。这是我的代码:

colls.Update(Query.EQ("_id", page.Id),
             Update.Set("created", page.Created)//in here,how to??
                   .Set("updated", page.LastUpdated)
                   .Inc("freq", 1), UpdateFlags.Upsert, SafeMode.False);

我的序列化代码:

cm.MapProperty<DateTime>(c => c.Created).SetElementName("created")
                    .SetSerializationOptions(datetimeSerializationOptions)
                    .SetDefaultValue(DateTime.Now);

cm.MapProperty<DateTime>(c => c.LastUpdated).SetElementName("updated")
                    .SetSerializationOptions(datetimeSerializationOptions);

1 个答案:

答案 0 :(得分:1)

目前mongodb不支持“upsert”,如果它的插入或更新,它的行为会有所不同。但是它在jira的计划中。因此,在决定插入或更新之前,先检查记录是否存在(只需使用多个查询);或者等待新版本的mongodb。