3

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' を使用して正確な検索を実装すると便利です。

4

1 に答える 1

1

クエリをオブジェクトとして定義しました{}。ただし、mongo シェルで使用する例には array があり[]ます。

それらが「一種の」同じものであることは知っていますが、おそらくこれらを同じタイプにする価値があります。

于 2013-08-12T22:24:37.680 に答える