(已解决)纠结的问题,mongoDB中的sort对日期降序,排序无效果
原来是键值写错,写错它也不报错,555
运行环境:wind7 64Bit;MongoDB 2.2.2 64Bit;
我在学习todo例子时,mongoose的排序sort日期无效果。谷歌好久,从2.6.7版本升到最新,改变语法亦无果。最后我以为不是mongoose的问题,直接在MongoDB shell上试验,最终问题定位在MongoDB上。。。。
文本格式如下:
/* 1 / { “content” : “1”, “updated_at” : { "$date" : 1358800741358 }, "_id" : { "$oid" : “50fda765d7a5548023000001” }, "__v" : 0 } / 2 / { “content” : “2”, “updated_at” : { "$date" : 1358800744124 }, "_id" : { "$oid" : “50fda768d7a5548023000002” }, "__v" : 0 } / 3 / { "__v" : 0, "_id" : { "$oid" : “50fdb31692ea378422000001” }, “content” : “3.0”, “updated_at” : { "$date" : 1358891471780 } } / 4 / { "__v" : 0, "_id" : { "$oid" : “50fdb31b92ea378422000002” }, “content” : “5.9”, “updated_at” : { "$date" : 1358803772190 } } / 5 / { “content” : “sort1”, “updated_at” : { "$date" : 1358803755602 }, "_id" : { "$oid" : “50fdb32b92ea378422000003” }, "__v" : 0 } / 6 / { “content” : “sort2”, “updated_at” : { "$date" : 1358803759978 }, "_id" : { "$oid" : “50fdb32f92ea378422000004” }, "__v" : 0 } / 7 / { "__v" : 0, "_id" : { "$oid" : “50fdb35092ea378422000006” }, “content” : “sort3.0”, “updated_at” : { "$date" : 1358891454230 } } / 8 / { “content” : “change1”, “updated_at” : { "$date" : 1358890315521 }, "_id" : { "$oid" : “50ff054b92ea378422000007” }, "__v" : 0 } / 9 */ { “content” : “change2”, “updated_at” : { "$date" : 1358890326185 }, "_id" : { "$oid" : “50ff055692ea378422000008” }, "__v" : 0 }
这个截图更直接看出数据类型:
运行MongoDB Shell,用语法排序结果截图:
关键语法是:db.todos.find().sort({update_at:-1}),目的是对日期进行降序排列。 日期获取是:node.js里的date.now()。
初步怀疑:mongoDB的sort对长日期无效。(觉得不可能,这个功能太常用了) 但无论如何,都是挺纠结的小白问题,希望有人帮忙解答。。。
3 回复
应该没有这个问题,我用了很久都没发现这个问题
我也用了很久没发现这个问题啊
不好意思,各位,我知道我错在哪里了。当我发现把键值updated_at写成update_at的时候,多么想用头去撞墙算了。。。5555