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

发布于 2024-12-11 08:01:45 字数 859 浏览 0 评论 0原文

我在使用 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);

I got a problem that use Upsert operation.

i have two date fields in the table,"created" and "updated",i use update operation that do INSERT operation when one record doesn't exist,otherwise do UPDATE operation.

when first time insert,the "created" field and "update" field both automatic set current date,when next time update,"the created" field ignore,update "update" field.

but i can't in one statement do that.Here is my code:

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);

my serialize code:

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

网名女生简单气质 2024-12-18 08:01:45

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

Currently mongodb doesn't support "upsert"s which behaves differently if its an insert or an update. but its on their plan in jira. So eigther you do a check if the record exists before deciding on insert or update (simply use multi query); or wait for the new version of mongodb.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文