我有一个包含一个字段description
的文档,如下所示:
{
"_id": "item0",
"description": {
"parlist": [
{
"listitem": {
"text": {
"child": "page rous lady",
"keyword": "officer e"
}
}
},
{
"listitem": {
"text": "shepherd noble "
}
}
]
}
}
如何在description
上创建文字索引并搜索特定字词?我不知道description
的深度可以达到多少以及描述的孩子有多少。我尝试使用这样的索引创建:
db.collection.ensureIndex({description:"text"})
然后查询如下:
db.collection.runCommand("text",{$search:"shepherd"})
但它不起作用。
答案 0 :(得分:0)
对于所有文字字段,您只需build an text index:
db.collection.ensureIndex({ "$**": "text" })
然后使用关键字$text进行搜索:
db.collection.find( { $text: { $search: "shepherd" } } )
答案 1 :(得分:0)
文本索引不适用于完整的子文档,但您可以创建包含多个字段的文本索引:
db.collection.ensureIndex(
{
"description.parlist.listitem.text": "text",
"description.parlist.listitem.text.child": "text",
"description.parlist.listitem.text.keyword": "text"
}
)