我在猫鼬中有这个模型:
const Product = mongoose.Schema({ categories: [String], name: String })
我想查看name
和categories
(这是字符串数组)字段中的内容,以部分匹配某个搜索词,并允许对错别字有一定的容忍度(变得模糊)。
因此,假设我提供查询:brush
。
它应返回所有这些版本中的name
或categories
包含此术语的所有产品(不限于举例说明:)
牙刷,牙刷,刷子,刷子,牙刷等。
如果我做这样的事情:
Product.aggregate(
[
{
$search: {
autocomplete: {
query: req.query.query,
path: "name",
fuzzy: {
maxEdits: 2,
},
},
},
},
]
它可以正常工作,即我在数据库中有一个名为“牙刷”的产品,如果我提供brash
作为查询,将返回此产品。
但是我也想在categories
数组中检查这种匹配,但是如果我提供path
作为['categories', 'name']
的话,它什么也不会返回...
似乎无法在String数组上运行自动完成功能。
但是,我是否可以至少检查常规text
而不是autocomplete
的{{1}}数组,并且也保留categories
的{{1}}?这两种搜索的合并结果排序,因此,如果满足这两个条件中的任何一个,它将返回乘积?