我正在尝试插入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方法”。异常。
有人能指出我正确的方向吗?
提前致谢
萨姆
答案 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);
这将使服务器为您设置时间戳的值。