【发布时间】:2017-03-11 01:21:21
【问题描述】:
我想知道是否可以通过最接近的匹配访问 MongoDB 中的文档。
例如我的搜索查询始终包含:namecountrycity
以下规则已经到位:
1.name总是要匹配
2. 如果存在country 或city,则国家优先级更高
3. 如果country 或city 不匹配,则仅考虑此文档,如果它们具有默认值(例如对于字符串:“”)
示例查询:name = "测试"country = "美国"city = "西雅图"
文件:
db.stuff.insert([
{
name:"Test",
country:"",
city:"Seattle"
},{
name:"Test3",
country:"USA",
city:"Seattle"
},{
name:"Test",
country:"USA",
city:""
},{
name:"Test",
country:"Germany",
city:"Seattle"
},{
name:"Test",
country:"USA",
city:"Washington"
}
])
它应该返回第三个文档
谢谢!
【问题讨论】:
-
它应该返回 2 个文件中的哪一个:名称匹配的文件,还是城市匹配的文件?
-
最近的一个。如果它发现匹配的 2 个属性是正确的,则返回两者都是一个选项。如果没有完全匹配,可能会首先返回最接近匹配的文档列表
-
如何根据这些字段的存在或不存在为您的文档添加权重并使用它来查询您的文档?
-
“可能”?如果您不知道结果中需要什么,那就很难回答了。
-
是的,@Styvane。这正是我的想法。只需要 OP 提供一些关于如何构建权重的指南,但显然范围已更改为返回“几乎匹配”文档的有序列表。
标签: mongodb