0

MongoDB に「単語」コレクションがあります。コレクションを検索したいときは、「単語」で始まり、クエリした「単語」を含む最初の単語をリストしたいと思います。同じ配列で、この結果が得られます。「simarte」、「Cumartesti」、「Mart」、「marti」、「martilar」。含むで検索すると、「単語」(マート)を含む他の単語が表示されます。

単語を「含む」順序よりも、「単語」で始まる単語を最初に順序付けたい。1回のクエリでそれを行うことは可能ですか? db に 2 回目のリクエストを行いたくありません。

ここに私のコードサンプルがあります:

    var word = "mart";
    db.words.find({"w" : {$regex : ".*" + word + ".*"}}, function(err, words) {
      if( err || !words) console.log("No data found");
      else{
       res.render('index', { title: 'Words', word_data: words, word : word });
     }
    });
4

1 に答える 1

0

フィールドで並べ替えるwと、mongodbは最初の文字を並べ替えるため(最初が等しい場合は2番目の文字など)、不可能だと思います。

テキスト検索が役立つかもしれません。結果にフィールドが含まれており、それscoreで並べ替えることができます。@WiredPrairie が指摘したように、Text Search は本番環境に対応していないため、注意してください。もう 1 つのオプションは、プログラムによる結果の並べ替えです。

ここで、それに関する詳細情報を見つけることができます:

http://docs.mongodb.org/manual/core/text-search/

MongoDB 全文検索によるソート

于 2013-07-04T11:31:20.860 に答える