mongoDB中的多个过滤器

时间:2016-04-12 04:05:24

标签: node.js mongodb monk

Theres是我的应用程序的一部分,我可以指定一些过滤器来检索某些数据。但并非所有的过滤器都是必需的,所以我可以将其中一些过滤掉,查询就不会使用它们。我怎样才能在mongoDB中实现这一目标。提前谢谢。

客户端:

        $('#filter').click(function(e){
        e.preventDefault();
        var filters = JSON.stringify({ Marca : $('#Marca').val(), Modelo : $('#Modelo').val(), Fecha : $('#Fecha').val()});

            $.ajax({
            type: 'POST',
            data: filters,
            url: '/filterFees',
            contentType: 'application/json'
            }).done(function( response ) {
                if(response.msg === ''){
                    filterFees(response.data);
                }
                else {
                    alert('Error: ' + response.msg);
                }
            })
        })

node.js(使用和尚):

app.post('/filterFees', function(req, res){
  var db = req.db;
  var collection = db.get('Fees');

  collection.find({'Marca' : req.body.Marca, 'Modelo' : req.body.Modelo, 'Fecha' : req.body.Fecha, },{},function(err,docs){
        res.send((err === null) ? { msg: '', data : docs } : { msg:'error: ' + err });
    });
})

1 个答案:

答案 0 :(得分:4)

检查过滤器中是否存在值

var filter = {}, filters;
if $('#Marca').val()
    filter.Marca = $('#Marca').val();

if $('#Modelo').val()
    filter.Modelo = $('#Modelo').val();

if $('#Fecha').val()
    filter.Fecha = $('#Fecha').val()

filters = JSON.stringify(filter);

并查找过滤器

的数据
collection.find(req.body,{},function(err,docs){
    res.send((err === null) ? { msg: '', data : docs } : { msg:'error: ' + err });
});

PS。不确定为什么要对参数进行字符串化 而不是发送对象