mongodb とノード JS を使用してキーワードによる検索を実装していますが、フィールドが配列を保持し、すべての要素を含むドキュメントを選択する演算子 $all が Mongo にあることがわかります。
ノード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']}})
奇妙なのは、'$all' の代わりに '$in' を使用することですが、'$all' を使用して正確な検索を実装すると便利です。