Node.js 如何在mongo db中按字符串类型的日期属性对记录进行排序

Node.js 如何在mongo db中按字符串类型的日期属性对记录进行排序,node.js,mongodb,express,Node.js,Mongodb,Express,我在mongo db中有以下记录: [{ "_id" : ObjectId("56840939e41a0038122b04c1"), "sudentName":"xxx", "payments" : [ { "paymentAmount" : 5000, "paymentMode" : "Education", "paidBy"

我在mongo db中有以下记录:

 [{
    "_id" : ObjectId("56840939e41a0038122b04c1"),
    "sudentName":"xxx",
    "payments" : [
            {
                    "paymentAmount" : 5000,
                    "paymentMode" : "Education",
                    "paidBy" : "Parent1",
                    "paymentDate" : "30-12-2015",
                    "paymentId" : ObjectId("5684097be41a0038122b04c2")
            },
            {
                    "paymentAmount" : 6000,
                    "paymentMode" : "Transport",
                    "paidBy" : "Parent1",
                    "paymentDate" : "30-12-2015",
                    "paymentId" : ObjectId("56840a54e41a0038122b04c3")
            },
            {
                    "paymentAmount" : 5000,
                    "paymentMode" : "Education",
                    "paidBy" : "Srinivas Nalla",
                    "paymentDate" : "19-01-2016",
                    "paymentId" : ObjectId("569e65cee51c46601bce3e1b")
            },
            {
                    "paymentAmount" : 5000,
                    "paymentMode" : "Education",
                    "paidBy" : "nalla",
                    "paymentDate" : "26-01-2016",
                    "paymentId" : ObjectId("56a6ea344d3111180cdeef5b")
            }
    ]
 }]
我使用以下查询结果,使用studentName和最近的paymentDate对paymentAmount进行分组:

 db.students.aggregate([{$match:{studentName:"XXX"}},{$unwind:"$payments"},{$group:{_id:"$payments.paymentMode",paidDate:{$max:"$payments.paymentDate"},paidAmount:{$sum:"$payments.paymentAmount"}}}]);
此查询对付款日期给出了错误的结果,如下所示:

   { "_id" : "Transport", "paidDate" : "30-12-2015", "paidAmount" : 6000 }
   { "_id" : "Education", "paidDate" : "30-12-2015", "paidAmount" : 15000 }
    { "_id" : "Transport", "paidDate" : "30-12-2015", "paidAmount" : 6000 }
    { "_id" : "Education", "paidDate" : "26-01-2016", "paidAmount" : 15000 }
但我希望得到如下结果:

   { "_id" : "Transport", "paidDate" : "30-12-2015", "paidAmount" : 6000 }
   { "_id" : "Education", "paidDate" : "30-12-2015", "paidAmount" : 15000 }
    { "_id" : "Transport", "paidDate" : "30-12-2015", "paidAmount" : 6000 }
    { "_id" : "Education", "paidDate" : "26-01-2016", "paidAmount" : 15000 }
我不明白问题出在哪里。我对paymtdate列使用了$max运算符


有人能帮我吗?

您的付款日期存储为字符串。那么,如果我使用max by paymentId,那么我如何才能获得该支付日期使用paymentId有什么意义呢?如果您将日期格式更改为YYYY MM,我想您可以按付款日期执行max。我是否将paymentDate保留为字符串类型或日期类型?如果您仅将日期保留为日期类型,这将很好。