我有一个"字" 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 });
}
});
答案 0 :(得分:0)
我认为这是不可能的,因为如果按w
字段排序,mongodb会考虑排序的第一个字母(如果第一个字母是等于第二个字母等)。
也许文字搜索可以帮到你。它在结果中包含score
字段,您可以按它排序。正如@WiredPrairie指出的那样,Text Search不是生产就绪的,所以要小心。
另一种选择是以编程方式排序结果。
在这里您可以找到更多相关信息: