查询之间有什么区别吗
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)
我以为两个查询的结果一定是相同的,但事实并非如此,两个查询返回相同的数据,但顺序不同,有人可以向我解释为什么吗?
以下MangoDB手册中引用的部分可以帮助您继续分析并找出确切的原因。
所列文件中的相关要点:
当您查询数组中的值时,Atlas Search 不会根据数组内与查询匹配的值的数量来更改匹配结果的分数。无论数组内的匹配数有多少,得分都与单个匹配相同。
每个文档的分数可以带入结果中并更仔细地分析您的案例。
“$project”:{“score”:{“$meta”:“searchScore”}}
此外,还可以对每个文档进行分数分解并扩展您的分析。
{“$project”:{“scoreDetails”:{“$meta”:“searchScoreDetails”}}
谢谢 我们做最好的4你