作为一个不是特别擅长Javascript的人,我试图更新Mongo中很多Date
对象时遇到了一些麻烦。
看起来$inc
对于Date
对象尚未实现。所以,为了尝试将一堆日期向后推一天,我通过mongo myScript.js
从bash中调用了(类似于)这个脚本:
conn = new Mongo();
db = conn.getDB('myDatabase');
var incrementDates = function() {
db.blah.find(myQuery).forEach(function(doc) {
db.blah.update(
{ _id : doc._id
, my_date : { $exists : true }
}
, { $set : { my_date : new Date(doc.my_date.getTime() + 86400000) }}
);
});
}
incrementDates();
基本想法似乎在mongoDB shell中运作良好:
> var doc = db.blah.findOne(myQuery)
> doc.my_date
ISODate("1962-11-02T23:00:00Z")
> new Date(doc.my_date.getTime() + 86400000);
ISODate("1962-11-03T23:00:00Z")
但在脚本中表现不太好:
TypeError: doc.my_date has no properties
所以我猜测我在尝试调用null
上的getTime
,即使我的更新查询应该只返回my_date
存在的文档。
对于这里正在发生什么,有什么想法吗?更重要的是:有没有更好的方法来做到这一点?