无法在mongodb中对MomentJS对象进行排序

时间:2014-03-17 19:16:34

标签: mongodb sorting momentjs

我有以下类型的对象存储在mongodb中:

 { _id: 5319b78ba96ea4ef5c99dd55,
    name: 'Test',
channel: 'Right one', showed: { _isAMomentObject: true, _i: '12.3.2014 21:45', _f: 'DD.MM.YYYY HH:mm', _l: null, _strict: null, _isUTC: false, _pf: [Object], _a: [Object], _d: Wed Mar 12 2014 21:45:00 GMT-0400 (EDT), _isValid: true, _lang: [Object] } },

我想按日期顺序获取最后30个对象。我尝试过以这种方式排序(以及使用shows._d),似乎按字母顺序排序,而不是按日期排序。

db.open(function(err, db) {
                        var options = {
                            'limit': 30,
                            'sort': ['showed._i','desc']
                        }

                        db.collection('programs', function(err, collection) {
                                collection.find({}, options, function(err, docs) {
                                        docs.toArray(function(err, docs) {
                                                res.json(docs);
                                        });
                                });
                        });
                });

1 个答案:

答案 0 :(得分:1)

对于sorting降序,您需要使用'-1'而不是'desc'。这是在shell中完成的:

db.collection.find({}).sort({'showed._i':-1}).limit(30)

此外,字段“shows._i”存储为字符串,而不是日期。这些值需要转换为Date类型,以便通过Sorting返回正确的结果。

检查this帖子,了解将字符串转换为日期类型的方法