MongoDB / C# - 插入带有自动填充时间戳的文档

时间:2012-01-31 22:13:32

标签: c# mongodb nosql

我正在尝试插入MongoDB集合。

我有一个包含Id(ObjectId)和Timestamp(long)的数据模型作为前两个属性。

从这里https://docs.mongodb.com/manual/reference/bson-types/#timestamps我明白如果这些都是空的,它们会自动填充吗?

保存实体时,正在设置ObjectId(Id / _id)列,但时间戳保持为空。我需要做些什么特别的设置吗?

我试过了:

    newdoc= Update.Replace(doc.ToBsonDocument().Set("Timestamp", new BsonJavaScript("new Timestamp()")));
    db.mydocs.Save(newdoc);

但是后来得到“无法在UpdateWrapper上调用GetDocumentId方法”。异常。

有人能指出我正确的方向吗?

提前致谢

萨姆

3 个答案:

答案 0 :(得分:1)

时间戳必须是您对象中的前两个字段之一,否则它将不会被填充。

答案 1 :(得分:0)

//Use C# native DateTime Library
var dateTime = DateTime.UtcNow;

//Filter 
var filter = builder.Eq("SomeKey", "SomeValue");

//What needs to be updated
var update = Builders<BsonDocument>.Update                  
.Set("createdAt", dateTime);

//Upsert Option!
var options = new UpdateOptions { IsUpsert = true };

collection.UpdateMany(filter, update, options)

//Out Put
"createdAt" : ISODate("2016-12-21T19:25:22.471Z")

答案 2 :(得分:0)

无法在互联网上找到答案,所以花了一些时间才弄清楚如何去做。解决方案似乎非常简单。当我尝试在控制台中键入new Timestamp()时,它返回Timestamp(0, 0),这对我来说是个暗示。您所需要做的就是:

doc.Timestamp = new BsonTimestamp(0, 0);

这将使服务器为您设置时间戳的值。