美好的一天,
需要一些帮助来搞清楚mongodb,mongoose和文本搜索。
我将此作为架构
var itemSchema = new schema({
itemID: Number,
description: {type: Schema.Types.Mixed}
}
在mongodb的集合中我有类似的东西
[
{
itemID:1
description: {
en: "car string in itemid 1"
fr: "voiture string in itemid 1"
es: "spanish string in itemid 1"
}
},
{
itemID:2
description: {
en: "motorcycle string in itemid 2"
fr: "motocyclette string in itemid 2"
es: "spanish string in itemid 2"
}
}
]
我如何进行文字搜索,比如让我说我正在寻找" voiture"在描述中。
是适合此类搜索的Schema.Types.Mixed,或者应该更改。我应该如何索引这样一个字段以获得更好的性能
谢谢
答案 0 :(得分:0)
你只能拥有one text index per collection,所以不是让一个具有属性作为字符串的对象,而是建议一组具有文本和语言的对象:
description: [
{ lang: "en", text: "car string in itemid 1" }
]
然后你可以创建一个像createIndex({ "description.lang": 1, "description.text": "text" })
这样的索引。然后查询query({ "description.lang": "fr", { $text: {$search: "voiture" } })
。这假设语言是提前知道的,这将是一个更有效的查询,但您也可以创建没有lang的索引,在这种情况下将搜索所有"description.text"
属性。