Mongo,查询差异

问题描述 投票:0回答:1

查询之间有什么区别吗

db.getCollection("cart").find(
    {
        "$and" : [
            {"$text":{"$search":"\"One\""}},
            {"user_id":1},
            {"shop_id":1},
            {"deleted":false},
        ]
    }
).sort({"score":{"$meta":"textScore"}, "updated_at":-1}).limit(12)

db.getCollection("cart").find(
    {
        "$text":{"$search":"\"One\""},
        "user_id":1,
        "shop_id":1,
        "deleted":false,
    }
).sort({"score":{"$meta":"textScore"}, "updated_at":-1}).limit(12)

我以为两个查询的结果一定是相同的,但事实并非如此,两个查询返回相同的数据,但顺序不同,有人可以向我解释为什么吗?

mongodb
1个回答
0
投票

以下MangoDB手册中引用的部分可以帮助您继续分析并找出确切的原因。

所列文件中的相关要点:

  1. 数组中给出的条件句的处理方式不同

当您查询数组中的值时,Atlas Search 不会根据数组内与查询匹配的值的数量来更改匹配结果的分数。无论数组内的匹配数有多少,得分都与单个匹配相同。

  1. 每个文档的分数可以带入结果中并更仔细地分析您的案例。

    “$project”:{“score”:{“$meta”:“searchScore”}}

  2. 此外,还可以对每个文档进行分数分解并扩展您的分析。

    {“$project”:{“scoreDetails”:{“$meta”:“searchScoreDetails”}}

对结果中的文档进行评分

谢谢 我们做最好的4你

© www.soinside.com 2019 - 2024. All rights reserved.