我正在尝试使用c#和mongodb更新子数组元素 我正在尝试更新tokennumber = 444的LoginDate
{
"_id" : ObjectId("5cf67ad97739bfe8525e5353"),
"Email" : "eyal@gmail.com",
"Username" : "eyal",
"Password" : "1234",
"Tokens" : [
{
"Tokennumber" : "123",
"Valid" : "true",
"LoginDate" : ISODate("2019-06-04T00:00:00.000Z")
},
{
"Tokennumber" : "444",
"Valid" : true,
"LoginDate" : ISODate("2019-06-08T06:41:05.313Z")
}
]
}
我已应用此代码
var result = _users.FindOneAndUpdate(
Builders<Users>.Filter.ElemMatch(to => to.tokens, t =>
t.tokennumber == decryptedtoken),
Builders<Users>.Update
.Set("LoginDate", DateTime.Now)
);
它添加了一个Logindate节点,但没有更新当前节点
答案 0 :(得分:0)
尝试使用-1来表示位置运算符的使用(已记录here)
var result =
_users.FindOneAndUpdate(
Builders<Users>.Filter.ElemMatch(to => to.tokens, t => t.tokennumber == decryptedtoken),
Builders<Users>.Update.Set(to => to.tokens[-1].logindate, DateTime.Now)
);