0

这就是我想要实现的目标

我有一个输入字段,在用户输入时,将对 mongodb 表进行 ajax 调用,并为 typeahead 功能提取 json 结果。

一切正常,但是当使用以下功能提取数据时

   exports.index = function(req, res){
  Licmgt.find(function (err, licMgts) {
    if(err) { return handleError(res, err); }
    return res.json(200, licMgts);
  });
};

它会在每个按下的关键字上带来所有数据,因此最终结果是,预输入结果永远不会缩小到正确的字符串。

下面是 html 元素中提前调用的代码

      <input class="form-control" typeahead="sourceArray as sourceArray for sourceArray in getOneID($viewValue)" 
  ng-model="asyncSelected" type="text">
      <i ng-show="oneid" class="glyphicon glyphicon-refresh" ></i>

并在ajax调用函数下方

  $scope.getOneID = function(val){
    console.log("value is " + val);
    return $http.get('/api/licMgts/',{
      params: {
        OneID:val
      }
    }).then(function(res){
      var oneIDs =[];
      angular.forEach(res.data,function(item){
        oneIDs.push(item.OneID);
      });
      return oneIDs;
    });
  };

我想知道如何在 mongo db 中使用“like”选项进行查询,对于关键字搜索,我找到了一些答案,例如使用 $text 进行文本搜索,如下所示

db.collections.find({$text:{$search: /keyword/}})

这是正确的方法吗?任何建议将不胜感激。

4

1 回答 1

0

没有办法将全文 mongo 搜索与 like 运算符一起使用。由于开发人员可以做一些黑客攻击。$text 运算符可以搜索不属于该单词的单词和短语。

“Running”可以是“run”的结果(受语言支持)搜索“blue”时可以获取“Blueberry”。

于 2015-07-22T12:43:39.943 回答