MongoDB中的一个查询中可能有多个标准?

时间:2013-07-04 10:58:32

标签: javascript node.js mongodb

我有一个"字" MongoDB中的集合。当我想要搜索该集合时,我想列出以"单词"开头的第一个单词。然后包含"字"我查了一下。在同一个数组中,我得到了这个结果; " simarte"," Cumartesti"," Mart"," marti"," martilar"。当我用contains搜索时,它会带给我其他包含" word" (市场)。

我想首先订购以"单词"开头的单词。比订单"包含"这些话。是否可以在一个查询中执行此操作?我不想向db发出第二个请求。

这是我的代码示例:

    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 });
     }
    });

1 个答案:

答案 0 :(得分:0)

我认为这是不可能的,因为如果按w字段排序,mongodb会考虑排序的第一个字母(如果第一个字母是等于第二个字母等)。

也许文字搜索可以帮到你。它在结果中包含score字段,您可以按它排序。正如@WiredPrairie指出的那样,Text Search不是生产就绪的,所以要小心。 另一种选择是以编程方式排序结果。

在这里您可以找到更多相关信息:

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

Sorting with MongoDB full text search