我正在使用 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' 来实现精确搜索会很有用