使用mongodb中的运算符进行动态搜索

时间:2015-06-26 11:34:24

标签: mongodb meteor operator-keyword

我是Meteor和MongoDB的新手。我想问一下如何在MongoDB中动态搜索数据。我的尝试是:

Template.MainTemplate.ItemsFounded = function() {
    return ITEM.find({ItemName:{$regex: Session.get('SearchItemName')}});
};

Template.TemplateSearchItem.events({
    'click .SearchItem' : function() {
        var $itemName =  $('#TextboxSearchItemName');
        Session.set('SearchItemName', '/'+ $itemName.val()+ '/');
    }
});

当它运行时,它什么都没显示..有人可以帮助我吗?对不起我的愚蠢问题..

感谢

1 个答案:

答案 0 :(得分:2)

问题可能来自这样一个事实:你没有构建一个正则表达式,而是一个简单的字符串:

Session.set('SearchItemName', '/'+ $itemName.val()+ '/');

为了构建正则表达式,您应该创建一个新的RegExp对象,以便在Mongo $regex查询中使用。您还应该重写“ItemsFounded”,因为它不是在Meteor中声明助手的正确方法:

Template.TemplateSearchItem.events({
  'click .SearchItem' : function() {
    var $itemName =  $('#TextboxSearchItemName');
    Session.set('SearchItemName', $itemName.val());
  }
});
...
Template.MainTemplate.helpers({
  ItemsFounded: function() {
    var regex = new RegExp(Session.get('SearchItemName'), 'i'); //'i' for case insensitive search
    return ITEM.find({ItemName:{$regex: regex}});
  }      
});