Может кто-то пожалуйста, помогите мне с этой проблемой, связанной MongoDB C# драйвер:
У меня есть поле, которое автоматически обновляется с датой от сервера. Но он работает только при обновлении документа.
Это работает (потому что это обновление (?)):
IMongoUpdate update = new UpdateDocument(new BsonDocument().Add("$currentDate", new BsonDocument().Add("lastModified", true)
.Add("lastModifiedTS", new BsonDocument("$type", "timestamp"))).Add(new BsonDocument()
.Add("$set", new BsonDocument().Add("altered", alteredElementValue))));
var updateResult = _collection.Update(Query.EQ("_id", key), update);
Это не работает (это вставка):
_collection.Save(bson.First().Add(new UpdateDocument(new BsonDocument().Add("$currentDate", new BsonDocument().Add("lastModified", true)
.Add("lastModifiedTS", new BsonDocument("$type", "timestamp"))))));
Но когда я вставить документ, он дает эту ошибку :
A first chance exception of type 'MongoDB.Driver.WriteConcernException' occurred in MongoDB.Driver.dll
Additional information: WriteConcern detected an error
'The dollar ($) prefixed field '$currentDate' in '$currentDate' is not valid for storage.'.
(Response was { "ok" : 1, "code" : 52, "err" : "The dollar ($) prefixed field '$currentDate' in '$currentDate' is not valid for storage.", "n" : NumberLong(0), "updatedExisting" : false }).
Может быть, потому что MOngoDB поддерживает такие поля только для обновления?
Это может быть точный ответ об ошибке, который вы получили. У вас не может быть полей в документе, начинающихся с '$'. Это зарезервировано для операторов, поэтому поля не могут быть названы таким образом. Возможно, вы имеете это в обратном порядке? Значит, вы действительно хотите сохранить «текущую временную метку» в поле «lastModified»? –