如何使用C#更新MongoDB中的子数组项

时间:2019-06-09 14:30:53

标签: c# mongodb

我正在尝试使用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节点,但没有更新当前节点

1 个答案:

答案 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)
    );