猫鼬在日期之间查找,按ID排序

时间:2020-01-21 21:55:11

标签: mongodb mongoose

因此,我试图在数据库中查找“ X”和“ X”日期之间的所有文档,然后按用户ID排序。这是我到目前为止所拥有的:

await Expense.find(
            {'date' :{'$gte': new Date(startDate), '$lte': new Date(endDate)}}),{sort: {_id: 1}}.exec(function(err, data){
                    if(err){
                        console.log('Error Fetching Model');
                        console.log(err);
                    }
                    console.log(JSON.stringify(data, null));
                    expenseArray = data;
                    console.log(expenseArray);

但是它一直给我“ TypeError:{(中间值)}。exec不是函数”

为澄清起见,我尝试用猫鼬写成这样:

"SELECT employeeName, SUM(amount)
            FROM reimbursements
            WHERE d8 BETWEEN '$startDate' AND '$endDate'
            GROUP BY employeeName
            ORDER BY employeeName;";

我在做什么错?预先谢谢你:D

1 个答案:

答案 0 :(得分:1)

您的查询语法很少,请尝试以下方法:

更新:

下面的旧代码可以工作,但是如果您这样尝试,那就更好了:

try {
    let data = await Expense.find(
        { 'date': { '$gte': new Date(startDate), '$lte': new Date(endDate) } }).sort({ _id: 1 })

    /** .find() will not return null, it will either return [] or [with matched docs] */

    if (data.length) { // checks data != [] 
        console.log(data)
    } else { // data == []
        console.log('Empty - no docs found')
    }
} catch (error) {
    console.log('Error Fetching Model');
    console.log(error);
}

旧的:

await Expense.find(
    { 'date': { '$gte': new Date(startDate), '$lte': new Date(endDate) } }).sort({ _id: 1 }).exec(function (err, data) { 
     /** sort is not an option for .find() not like aggregate, it has to be on cursor which is result of .find() & .exec() should be at end which is either .find() or .sort() */
        if (err) {
            console.log('Error Fetching Model');
            console.log(err);
        }
        console.log(JSON.stringify(data, null));
        expenseArray = data;
        console.log(expenseArray)
    })

示例: mongooseModel.find().sort().exec()

参考: cursor.sort

相关问题