如何按查询结果的日期字段排序?

时间:2017-02-12 10:24:15

标签: javascript node.js mongodb

我是javascript和MongoDB技术的新手。我正在尝试根据某些条件(使用字段和值)查询“业务”集合。我需要使用日期字段(CreateDate)对查询结果进行排序。你能帮助我吗?在此先感谢您的帮助!:) [Screenshot of my code attached here]

请注意:CreateDate字段中的值以YYYY-MM-DD格式存储为字符串,即2017-04-01。

我收到一条错误消息

  

“无法读取属性'sort'的未定义”

当我尝试执行以下代码时:

CODE:

exports.readDocument = function(collection, uniqueKey, field, value, callback) {

    MongoClient.connect(url, function(err, db) {
        assert.equal(null, err);
        db.collection("Businesses").find({
                "Id": uniqueKey
            }, {
                [field]: value,
                _id: 0
            },
            function(err, result) {
                if (result) {
                    result.toArray(function(err, items) {
                        console.log("toArray", items, err);
                    });
                    callback(true);
                } else {
                    callback(false);
                }
            }).sort({
            "Created Date": -1
        });
        db.close();
    });
};

4 个答案:

答案 0 :(得分:0)

确保您在查询中使用的字段名称("创建日期")与文档中使用的名称相同。另外,最好坚持使用带下划线的小写字母数字字段名称。

答案 1 :(得分:0)

您需要检查数据库名称是否正确。 还要确保在排序之前获得预期的结果。 我非常怀疑结果是null,这就是为什么你收到错误“undefined”对象。

答案 2 :(得分:0)

我认为你的语法错了。你的语法应该是这样的

<?php
for ( $i = 000; $i < 1000; $i++){
echo str_pad($i, 3, '0', STR_PAD_LEFT) . "<br />\r\n";
}
?>

答案 3 :(得分:0)

db.collection("Businesses").find({
                "Id": uniqueKey
            }, {
                [field]: value,
                _id: 0
            }).sort({"Created Date": -1}).exec(function(err, result) {
                if (result) {
                    result.toArray(function(err, items) {
                        console.log("toArray", items, err);
                    });
                    callback(true);
                } else {
                    callback(false);
                }
            })

试试这个形式的mongoose驱动程序。