PyMongo 全文搜索列表中的项目

PyMongo full text search of items in a list

我希望使用 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)

您已经在 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']}