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
字段中。
每个集合只能创建一个文本索引,但如果需要可以添加多个字段;此示例在 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']}
我希望使用 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']}