如何使用Mongodb中一个字段的未知数量的孩子的全文搜索?

时间:2014-04-23 10:00:17

标签: mongodb mongodb-indexes

我有一个包含一个字段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"})

但它不起作用。

2 个答案:

答案 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"
     }
)