Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法对mongodb中的MomentJS对象进行排序_Mongodb_Sorting_Momentjs - Fatal编程技术网

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

无法对mongodb中的MomentJS对象进行排序,mongodb,sorting,momentjs,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,

我在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] } }, 对于按降序排列的,您需要使用“-1”而不是“desc”。这是如何在shell中完成的:

db.collection.find({}).sort({'showed._i':-1}).limit(30)
此外,字段“show._i”存储为字符串,而不是日期。这些值需要转换为日期类型,以便通过排序返回正确的结果


检查post以了解将字符串转换为日期类型的方法,该方法返回的项目从2014年3月9日21:00开始,但我有日期为2014年3月23日18:00的项目,这是因为您将日期存储为字符串。按字符串排序时,“9.3.2014 21:00”大于“23.3.2014 18:00”。要返回正确的结果,您需要将日期存储为ISODate()对象。好的,我的数据库中已经有一些数据,因此需要进行某种转换才能使一切顺利运行。这是正确的。我已经编辑了我的文章,并提供了一个链接,提供了一个将字符串转换为日期的示例方法。谢谢你让它工作起来。在mongodb:)上转换非常容易。转换过程中的纯javascript只是摇摇晃晃(至少与PL/SQL相比是这样)。为什么要存储完整的对象,而只需要
Date
对象呢?不幸的是,除非您愿意将集合转换为使用标准日期格式,否则您将无法进行排序。看起来你的对象中可能有一个
日期
,但它有一个时区(
“EDT”
),而不是存储为UTC。我认为,d有ISO格式的日期,但你说EDT是一个额外的日期,不应该存在?除非所有日期都在同一时区,否则它不会工作。UTC需要跨时区进行统一排序。但是,如果一切都是EDT,您可以对该属性进行排序。
db.collection.find({}).sort({'showed._i':-1}).limit(30)