3

我正在使用 mongodb 和节点 JS 实现关键字搜索,但我看到 Mongo 中有运算符 $all 选择字段包含数组并包含所有元素的文档。

这是我使用节点 JS 的源代码

exports.find = function(req, res) {
    var b=req.params.search;
    var query = {};
    var cadsrch = b.split(' ');
    var l = cadsrch.length;
    var i = 0;
    for (i = 0; i < l; i++) {
        if(cadsrch[i]!=''){
          query[i]=new RegExp('^'+cadsrch[i], 'i');
        }
    }

    db.collection('publicacion', function(err, collection) {
        collection.find({tags: {'$all':query}},{title:true,content:true}).limit(5).toArray(function(err, items) {
            res.jsonp(items);
        });
    });
};

上面的源码不起作用,但是这个查询在 Mongo-> 中有效

db.publication.find({tags:{$all:['chevrolet','car']}})

奇怪的是使用 '$in' 而不是 '$all' 工作,但使用 '$all' 来实现精确搜索会很有用

4

1 回答 1

1

您已将查询定义为对象{}。但是,您在 mongo shell 中使用的示例有一个数组[]

我知道它们是“某种”相同的东西,但可能值得将它们制成相同的类型。

于 2013-08-12T22:24:37.680 回答