簡體   English   中英

PyMongo Atlas Search 不返回任何內容

[英]PyMongo Atlas Search not returning anything

我正在嘗試使用 Atlas 對 MongoDB 進行全文搜索。我正在通過 Python 中的 PyMongo 驅動程序執行此操作。我正在使用聚合管道,並執行 $search 但它似乎沒有返回任何內容。

cursor = db.collection.aggregate([
    {"$search": {"text": {"query": "hello", "path": "text_here"}}},
    {"$project": {"file_name": 1}}
])

for x in cursor:
    print(x)

我試圖用這段代碼實現的是搜索集合中名為“text_here”的字段,我正在搜索術語“hello”並返回包含該術語的所有結果並按“文件名”。 但是,它什么也不返回,我很困惑,因為這與文檔網站上的示例代碼幾乎相同。 我現在唯一能想到的是可能路徑不正確,它無法訪問我指定的字段。 此外,此代碼不返回任何錯誤,只是不返回任何內容,正如我通過循環 cursor 測試的那樣。

我遇到過同樣的問題。 我通過在查詢中傳遞索引名稱來解決它。 例如:

{ 
  index: "name_of_the_index",
  text: {
    query: 'john doe',
    path: 'name'
  }
}

我按照教程進行操作,但在不指定“索引”名稱的情況下無法獲得任何結果。 我希望在文檔中提到這是強制性的。

如果你只是在做一個查找和項目,你不需要聚合查詢,只需要一個find() 你想要的語法是:

db.collection.find({'$text': {'$search': 'hello'}}, {'file_name': 1})

等價於使用聚合:

cursor = db.collection.aggregate([
    {'$match': {'$text': {'$search': 'hello'}}},
    {'$project': {'file_name': 1}}])

工作示例:

from pymongo import MongoClient, TEXT

db = MongoClient()['mydatabase']

db.collection.create_index([('text_here', TEXT)])
db.collection.insert_one({"text_here": "hello, is it me you're looking for", "file_name": "foo.bar"})

cursor = db.collection.find({'$text': {'$search': 'hello'}}, {'file_name': 1})

for item in cursor:
    print(item)

印刷:

{'_id': ObjectId('5fc81ce9a4a46710459de610'), 'file_name': 'foo.bar'}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM