如何正确添加两个条件到mongodb find()?

时间:2018-02-25 14:15:03

标签: mongodb mongoose

查找数据时遇到问题。我要条件: 1.匹配ID 2.时间范围

只在id上使用find()时才能正常工作,但是当我尝试使用两者或只是时间时会出现轮询错误。这就是我到目前为止所拥有的:

findRange: function (dateRange, callback) {
    ExpenseModel.find(
            {telegramId: dateRange.telegramId,
            time:{
                    $gt: ISODate(dateRange.from),
                    $lte: ISODate(dateRange.to)
            }},
            function (err, existingSequence) {
                if (err) {
                    callback(err, null);
                    return;
                }
                if (existingSequence) {
                    callback(null, existingSequence);
                } else {
                    console.log("not found")
                    callback(null, false);
                }
            }
        );
    }

1 个答案:

答案 0 :(得分:0)

您必须使用$and属性

findRange: function (dateRange, callback) {
    ExpenseModel.find({$and : [
                 { telegramId: dateRange.telegramId},
                 { time:{
                    $gt: ISODate(dateRange.from),
                    $lte: ISODate(dateRange.to)
                    }
                  }
                ]
            },
            function (err, existingSequence) {
                if (err) {
                    callback(err, null);
                    return;
                }
                if (existingSequence) {
                    callback(null, existingSequence);
                } else {
                    console.log("not found")
                    callback(null, false);
                }
            }
        );
    }