我正在尝试编写以下查询,以便用C#中的服务器端时间更新时间。
db.users.update(
{ _id: 1 },
{
$currentDate:
{
lastModified: true,
lastModifiedTS: { $type: "timestamp" }
}
})
有人可以建议如何通过C#代码运行此命令以及我需要使用哪个驱动程序版本?
答案 0 :(得分:1)
由于$currentDate
是即将推出的2.6版本的新功能,因此您当前的驱动程序可能不支持它。您总是可以使用BSON文档而不是强类型包装器来执行它:
collection.Update(
new QueryDocument() { { "_id", 1 } },
new UpdateDocument() {
{ "$currentDate", new BsonDocument {
{ "lastModified", true },
{ "lastModifiedTS", new BsonDocument { { "$type", "timestamp" } } }
} }
});
我认为下一版本的C#驱动程序将支持强类型帮助程序。
答案 1 :(得分:1)
差不多一年后,我偶然发现了这个问题并做了一些研究。
我在官方mongo驱动程序的1.9.2版中找到了这个有趣的方法:
var query = Query.EQ("_id", 1);
var update = Update
.Set("field_timestamp_local", DateTime.Now)
.CurrentDate("field_timestamp_mongo");
collection.Update(query, update);
此代码将2个字段设置为时间戳,第一个设置为本地客户端时间戳,第二个字段设置为服务器时间。