引用document属性以在mongo更新查询中更新另一个

时间:2016-06-21 16:59:25

标签: mongodb

<Unknown function>

这是我的mongo数据,我想将注销时间设置为当前时间,将“持续时间”设置为同时登录和注销时间的差异。所以我执行了以下查询:

{
    "_id" : ObjectId("57693a852956d5301b348a99"),
    "First_Name" : "Sri Ram",
    "Last_Name" : "Bandi",
    "Email" : "chinni001sriram@gmail.com",
    "Sessions" : [
        {
            "Class" : "facebook",
            "ID" : "1778142655749042",
            "Login_Time" : ISODate("2016-06-21T13:00:53.867Z"),
            "Logout_Time" : ISODate("2016-06-21T13:01:04.640Z"),
            "Duration" : null
        }
    ],
    "Count" : 1
}

但我得到的结果是将注销时间设置为当前时间,但持续时间设置为“NaN”。

1 个答案:

答案 0 :(得分:0)

Mongo不支持在更新中引用当前对象

所以你可以做的是:

  db.collection.find( { "Sessions.ID": 1778142655749042, "Sessions.Logout_Time": null
    }).forEach(function(doc){

       for(var session in doc.Sessions){
           if(!session.Logout_Time){
               session.Logout_Time =  new Date();
               session.Duration = new Date(new Date() - doc.Login_Time");
             }

       }

db.collection.save(doc);

});