MongoDb:排序文本搜索结果

时间:2016-02-29 15:23:46

标签: mongodb mongodb-query database

我创建了一个返回包含结果的查询 字段值内"Be"。 e.g:

db.collection.find({ "$or" : [ { "name.en" : { "$regex" : "Be" } } , { "defaultName" : { "$regex" : "Be" } } ] })

但是,返回的结果是随机排序的,有些在单词中包含"Be",有些在开头,有些在最后。

是否可以创建一个单一的查询,它会按以下方式对结果进行排序:首先返回的结果将以"Be"开头,然后是其他所有结果?

查询结果示例:

{
"defaultName" : "Belgium",
...
},
{
"defaultName" : "Berlin",
...
},
{
"defaultName" : "Bombei",
...
},
{
"defaultName" : "Danube",
...
}

1 个答案:

答案 0 :(得分:1)

这种方法可以使用aggreagtion框架来完成

阶段将是:

  
      
  1. 匹配 - 选择与正则表达式匹配的元素

  2.   
  3. 按表达式分组元素,如果以正则表达式短语开头 - >是,否则为假

  4.   
  5. 按2

  6. 中的表达式排序   

您怎么看?