如何在mongodb中使用$ currentdate使用C#驱动程序

时间:2014-01-27 15:37:29

标签: c# mongodb mongodb-.net-driver

我正在尝试编写以下查询,以便用C#中的服务器端时间更新时间。

db.users.update(
    { _id: 1 },
    {
        $currentDate:
        {
            lastModified: true,
            lastModifiedTS: { $type: "timestamp" }
        }
    })

有人可以建议如何通过C#代码运行此命令以及我需要使用哪个驱动程序版本?

2 个答案:

答案 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个字段设置为时间戳,第一个设置为本地客户端时间戳,第二个字段设置为服务器时间。