Date
特に Javascript に強いわけではないので、Mongo で多くのオブジェクトを更新しようとして少し苦労しています。
オブジェクト$inc
についてはまだ実装されていないDate
ようです。それで、1日でたくさんの日付を試してみるために、bashから次のスクリプトを(のようなもので)呼び出しましたmongo myScript.js
:
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 シェルで十分に機能するようです。
> 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
getTime
したがって、更新のクエリは存在するドキュメントのみを返す必要がありますが、null
どこかで呼び出そうとしていると思いますmy_date
。
ここで何が起こっているかについてのアイデアはありますか?もっと重要なのは、これを行うためのより良い方法はありますか?