1

Node MongoDB ドライバーを使用して、Web サイトの分析を収集し、MongoLab に送信しています。後でMongoで集計を行うために使用できるように、現在の日時をドキュメントに挿入するにはどうすればよいですか?

明確にするために、コードは次のとおりです。

var query = {};
query['date_time'] = new Date();
Db.connect(mongoUri, function (err, db) {
        if (!err) {
            db.collection(analyticsCollection, function (err, coll) {
                if (!err) {
                    coll.save(query, {safe:true}, function (err, result) {
                        db.close();
                        res.send(200,result);
                        //console.log(result);
                    });
                } else {
                    res.json(503,{errno:503,msg:'error: collection does not exist.'});
                }
            });
        } else {
            res.json(503,{errno:503,msg:'error: database does not exist.'});
        }
    });

MongoDB のドキュメントには、mongo シェルで BSON 日付を作成する方法が記載されていますが、Node ドライバーでは作成されておらず、Node ドライバーのドキュメントでも見つかりません。

4

1 に答える 1

0

I found a way to do what I wanted to do. This seems kind of klugey to me, so if anyone can find a better way, please let me know. My solution uses the underscore.js library:

var _ = require('underscore');
vary query = {}
query['foo'] = 'bar'

Db.connect(mongoUri, function (err, db) {
        if (!err) {
            db.collection(analyticsCollection, function (err, coll) {
                if (!err) {
                    coll.save(_.extend(query,{"datetime":new Date()}), {safe:true}, function (err, result) {
                        db.close();
                        res.send(200,result);
                        //console.log(result);
                    });
                } else {
                    res.json(503,{errno:503,msg:'error: collection does not exist.'});
                }
            });
        } else {
            res.json(503,{errno:503,msg:'error: database does not exist.'});
        }
    });

Now I can do the aggregation (without needing to use the $project operator):

> db.analytics.aggregate([{$group:{_id:{day:{$dayOfMonth:"$datetime"}}}}])
{ "result" : [ { "_id" : { "day" : 15 } } ], "ok" : 1 }

Hope this helps someone.

于 2013-06-15T17:57:16.677 に答える