用MongoDB和Node.js查询不返回任何结果

时间:2019-06-30 15:56:29

标签: node.js mongodb

我是Java,Node.ja和MongoDB的新手,在指定查询参数时无法将结果返回到Node.js服务器中(可以很好地返回所有记录而无需查询)。

我的收藏集的时间戳字段的格式为“ yyyy-mm-dd hh:mm:ss”,我想返回小时为“ 00”,“ 06”,“ 12”或“ 18”的所有结果'驱动图表(使用chart.js)

在mongo cmdline上,我可以执行以下操作:

  

db.MyCollection.find({$ or:[{“ timestamp”:/.* 06:。 /},{“ timestamp”:/. 12:。 /} ,{“ timestamp”:/. 18:。 /},{“ timestamp”:/. 00:。* /}]})

这返回了我的期望。但是,我无法在Node.js服务器中使用它。

function getChartData_7d(callback) {
    MongoClient.connect(mongoURL, function(error, client) {
        if (error) {
            throw err;
        }

        var db = client.db('WeatherDB');
        var collection = db.collection('AverageTPH');

        var query = {
            $or:[
                {timestamp: /.* 06:.*/}, 
                {timestamp: /.* 12:.*/}, 
                {timestamp: /.* 18:.*/}, 
                {timestamp: /.* 00:.*/}
            ]
        };

        /*
        ** Even this query doesn't return anything
        */
        var query = {
            timestamp: /.* 06:.*/ 
        };

        /*
        ** But this does...
        */
        var query = {};

        var options = {
            "limit": 7
        };

        /*
        ** Get a reading 4 times a day at 06:xx, 12:xx, 18:xx, 00:xx for 7 days...
        */
        collection.find(query, options).sort({timestamp: -1}).toArray((error, items) => {
            if (error) {
                throw error;
            }

            return callback(items);
        });

        client.close();
    });
}

我已经看过示例并阅读了MongoDB手册,但我正在挠头试图使它起作用。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案。由于我几乎找不到有用的文档和示例,因此我转储了MongoDB并安装了Postgres,它的工作原理就像一个吊饰!