PyMongo列表中项目的全文搜索

问题描述 投票:0回答:1

我正在寻找使用PyMongo进行文本搜索的列表中嵌入的某些项目。我的数据库结构如下:{_id:"148319665188372481" }, "tags": ['#123456', '#789012'}

我想在我的数据库中专门搜索短语“ 123456”,但是由于这些项目已嵌入列表中...我不太确定该怎么做。

这是我当前的代码:

        accounts.create_index([('tags', pymongo.TEXT)])
        async for something in accounts.find({"$text": {"$search": "123456"}}):
            print('Entered loop')
            print(something)
python pymongo tornado-motor
1个回答
0
投票

您已经在tags字段上创建了文本索引,但是数据在items字段中。

您只能为每个集合创建一个文本索引,但可以根据需要添加多个字段;此示例在tagsitems字段上都创建了索引:

import pymongo

db = pymongo.MongoClient()['mydatabase']
db.accounts.create_index([('tags', pymongo.TEXT), ('items', pymongo.TEXT)])
db.accounts.insert_one({"items": ['apple', 'orange', 'peach']})

for something in db.accounts.find({"$text": {"$search": 'apple'}}):
    print(something)

结果:

{'_id': ObjectId('5e3f03992a4d2cf213983fe3'), 'items': ['apple', 'orange', 'peach']}
© www.soinside.com 2019 - 2024. All rights reserved.