2013-10-08 31 views
3

我正在尝试在MongoDB中为子文档中的几个字段创建文本索引。从文件到文件这些字段是不一样的。 According to the documentation,我想创建一个普通的文本索引像这样:在子文档字段通配符上创建文本索引

db.collection.ensureIndex({ 
    subject: "text", 
    content: "text" 
}); 

在我的情况,我想在db.fs.files.metadatafs.files收集在各个领域的指数。我已经试过这样:

db.fs.files.ensureIndex({'metadata.$**': 'text'}); 

我不相信这已先后与db.fs.files.runCommand('text'...返回零结果搜索和db.fs.files.stats()显示指数作为一个非常小的尺寸(我有这个集合中〜35K文件)。

如何创建一个文本索引字段值的子文件的密钥是未知的提前?

+0

你想在GridFS中进行全文搜索吗?我不确定这会起作用。 – tom

+0

在链接的文档中:'此文本索引编录主题字段和内容字段中的所有字符串数据,其中字段值是字符串或字符串元素数组。 '所以如果类型不是字符串或字符串数​​组不会收集任何东西。 – attish

+0

@tom我正在尝试对GridFS中的项目元数据进行全文搜索。我看不出'fs.files'集合与任何其他集合有什么不同。 (我没有试图在GridFS中搜索文件的实际数据。) – Brad

回答

3

如果您在父文档上创建了一个{'$ **':'text'}索引,它也会索引子文档字段。文档说它只影响文本,所以它会跳过文件数据,但会包含名称& contentType。

相关问题