찾다

 >  Q&A  >  본문

node.js - MongoDB 多条件查询

有这样一个需求:根据URL中的query参数,来判断应该包含哪些查询条件。

使用场景

var _q = req.query;

// 当URL为 http://api.abc.com/group/filter?s=2
group.find({status:_q['s']});

// 当URL为 http://api.abc.com/group/filter?t=1&s=2
group.find({type:_q['t'],status:_q['s']});

请问find()如何书写,才能满足查询条件?

我当前的做法

var _q = req.query, _qParams = [];
if(_q.hasOwnProperty("t")){
    _qParams.push({"type":_q["t"]});
}
if(_q.hasOwnProperty("s")){
    _qParams.push({"status":_q["s"]});
}
groups.find({$or:_qParams},{},{sort:{_id:-1},limit:50}).exec(function (err, data) {
    if(!data || data.length == 0){
        res.json({code: 404, msg: "Empty"});
    }else{
        res.json({code: 0, msg: "success", data: data, count: data.length});
    }
});

但是执行了这条语句

res.json({code: 404, msg: "Empty"});

请各位高手赐教!

ringa_leeringa_lee2872일 전669

모든 응답(2)나는 대답할 것이다

  • 巴扎黑

    巴扎黑2017-04-17 15:19:01

    실행된 문은 결과를 찾을 수 없음을 나타냅니다. err을 인쇄하여 오류가 보고되었는지 확인한 다음 데이터베이스에 레코드가 존재하는지 확인하세요.

    또한 아래 코드의 쿼리 조건은 위에서 언급한 것과 다릅니다. 아래 코드는 $or query를 사용하는 반면, 위 쿼리는 and query를 사용해야 합니다

    으아악

    groups.find({$or:_qParams},{},{sort:{_id:-1},limit:50});
    쿼리할 또 다른 위치가 있습니다. 모든 필드가 있는 경우 두 번째 필드입니다. 반환되며, {}

    이 아닌 null을 전달합니다.

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-04-17 15:19:01

    @江立 수정했는데, 데이터가 없어도 모든 기록이 반환됩니다.

    으아악

    회신하다
    0
  • 취소회신하다