我有一个像这样的文本索引的集合:
db.mycollection.createIndex({ "$**" : "text"},{ "name" : "AllTextIndex"}))
该集合的文档有许多文本数据块。我想排除其中的一些,以便得不到包含从排除的块匹配的文本的结果。
但是,我不想像下面那样定义文本索引中的每个字段,以便排除例如NotTextSearchableBlock
块:
db.application.ensureIndex({
"SearchableTextBlock1": "text",
"SearchableTextBlock2": "text",
"SearchableTextBlock3": "text"
})
这是一个文档示例:
{
"_id": "e0832e2d-6fb3-47d8-af79-08628f1f0d84",
"_class": "com.important.enterprise.acme",
"fields": {
"Organization": "testing"
},
"NotTextSearchableBlock": {
"something": {
"SomethingInside": {
"Text":"no matcheable text"
}
}
},
"SearchableTextBlock1": {
"someKey": "someTextCool"
},
"SearchableTextBlock2": {
"_id": null,
"fields": {
"Status": "SomeText"
}
},
"SearchableTextBlock3": {
"SomeSubBlockArray": [
{
"someText": "Pepe"
}
]
}
}
答案 0 :(得分:1)
要回答您的问题,没有记录的方法来从文本索引中排除某些字段。(请参阅mongodb文档中的Text Indexes 。)
如您所知:
建立db.mycollection.createIndex({
mystringfield : "text"
mystringarray : "text"
})
索引时,您必须标识要索引的特定文本字段。该字段必须是字符串或字符串元素数组。
$**
您还可以使用通配符说明符db.mycollection.createIndex(
{ "$**" : "text" },
{ name : "mytextindex" }
)
索引集合文档中的所有文本。
with open(filename, 'rb') as f:
z = py7zlib.Archive7z(f)
names = z.getnames()
if subName in names:
subFile = z.getmember(subName)
contents = subFile.read()
else:
contents = None
return contents