mongodb - 为什么更新 MongoDB 中的 DateTime 会得到错误的值?

标签 mongodb datetime nosql

我有一个具有 DateUpdated DateTime 属性的模型。

在我更新该模型之前,我的模型信息是

before changes

更新我的模型信息后

after changes

为什么 MongoDB 存储错误的 DateUpdated 值?我使用调试器尝试了几次,看起来每次该值都发生更改,但日期时间错误。

我使用 C# 驱动程序。

我的更新功能是

var query = Query.EQ("_id", p.UserID);
var update = MongoDB.Driver.Builders.Update.Replace(p);
SafeModeResult success =  MongoRepository.Profiles().Update(query, update);

SafeModeResult 始终成功。

我的 DateUpdated Bson 属性是

[BsonElement("da")]
[BsonDateTimeOptions(Representation = BsonType.Document)]
public DateTime DateUpdated{ get; set; }

最佳答案

MongoDB 以 UTC 格式存储日期时间值。您看到的是本地时间到 UTC 的转换。

处理时区的最佳方法是将所有数据保存为 UTC 格式(包括数据模型中的数据,而不仅仅是数据库中的数据),并且仅在向用户显示值时才转换为本地时间。

关于mongodb - 为什么更新 MongoDB 中的 DateTime 会得到错误的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12350418/

相关文章:

java - Cassandra 选择按添加日期排序的行

node.js - 如何使用 Mongoose 获取 MongoDB 集合的大小(字节)?

mongodb - MongoDB可以在不影响现有文档(例如Elasticsearch)的情况下进行更新

javascript - 使用 javascript 获取当前季度

c# - HttpWebRequest 日期 header 格式

c# - 以编程方式从 Azure 表存储获取所有列名称的完整列表

MongoDB toLowerCase()

c# - 在使用 ISODate 范围搜索 mongodb 集合中的文档时,出现错误 "String was not recognized as a valid DateTime"

python - 在 python 中保存 csv 文件,以日期时间作为文件名

c - Couchbase REST API 是否支持 NON-JSON 数据(二进制数据)