我遇到了使用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);
答案 0 :(得分:1)
目前mongodb不支持“upsert”,如果它的插入或更新,它的行为会有所不同。但是它在jira的计划中。因此,在决定插入或更新之前,先检查记录是否存在(只需使用多个查询);或者等待新版本的mongodb。