我正在寻找使用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
字段中。
您只能为每个集合创建一个文本索引,但可以根据需要添加多个字段;此示例在tags
和items
字段上都创建了索引:
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']}