【问题标题】:MongoDb: sort text search resultsMongoDb:对文本搜索结果进行排序
【发布时间】:2016-02-29 15:23:46
【问题描述】:

我创建了一个查询,它返回的结果包含 "Be" 在字段值内。例如:

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

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

是否可以创建一个查询,该查询将按以下方式对结果进行排序:第一个返回的结果将以 "Be" 开头,然后是其余的?

查询结果示例:

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

【问题讨论】:

    标签: mongodb mongodb-query database


    【解决方案1】:

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

    阶段将是:

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

    2. 如果以正则表达式开头,则按表达式对元素进行分组 -> true,否则为 false

    3. 从 2 开始按表达式排序

    你怎么看?

    【讨论】:

    • 听起来像是一个可行的解决方案。不幸的是,除了使用聚合框架之外,我没有看到其他解决方案。感谢您的回答。
    • 这是我的荣幸 :-)
    猜你喜欢
    • 1970-01-01
    • 2011-10-16
    • 2013-04-28
    • 2016-05-21
    • 2021-08-19
    • 1970-01-01
    • 2013-08-19
    • 2021-08-19
    • 2017-10-27
    相关资源
    最近更新 更多