我创建了一个返回包含结果的查询
字段值内"Be"
。 e.g:
db.collection.find({ "$or" : [ { "name.en" : { "$regex" : "Be" } } , { "defaultName" : { "$regex" : "Be" } } ] })
但是,返回的结果是随机排序的,有些在单词中包含"Be"
,有些在开头,有些在最后。
是否可以创建一个单一的查询,它会按以下方式对结果进行排序:首先返回的结果将以"Be"
开头,然后是其他所有结果?
查询结果示例:
{
"defaultName" : "Belgium",
...
},
{
"defaultName" : "Berlin",
...
},
{
"defaultName" : "Bombei",
...
},
{
"defaultName" : "Danube",
...
}
答案 0 :(得分:1)
这种方法可以使用aggreagtion框架来完成
阶段将是:
匹配 - 选择与正则表达式匹配的元素
按表达式分组元素,如果以正则表达式短语开头 - >是,否则为假
- 中的表达式排序 醇>
按2
您怎么看?