You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python操作MongoDB查询无匹配结果时返回无匹配提示的方法

Python MongoDB电影查询新增无结果提示实现方案

现有逻辑问题

当前代码仅实现了命中结果时的遍历输出,未对空查询结果做处理,当无匹配数据时程序不会给出任何反馈,需要补充结果非空校验逻辑。

修改后可直接运行的完整代码

import sys
from pymongo import MongoClient as mc
from pymongo import ASCENDING as asc, DESCENDING as desc


def get_coll():
    try:
        server = mc("localhost", 27017)
        moviesdb = server.lab4
        return moviesdb.movies        
    except:
        return None
moc = get_coll()
if moc:
    print("Find Movies by")
    choice = input("1.Imdb ID\n"
          "2. Plot\n"
          "3. Stop Search\n" )
    if choice == "1":
        imdb = input("Enter a IMDB ID: ")
        imdb_curs = moc.find({"imdb_id":imdb},
                                {"imdb_id":True, "title": True,"_id":False}
                             )
        imdp_list = list(imdb_curs)
        # 空结果判断
        if not imdp_list:
            print("无匹配")
        else:
            for m in imdp_list:
                print(f"{m['imdb_id']} : {m['title']}")
    elif choice == "2":
        plot_word = input("Enter a search word for plot: ").lower()
        plot_curs = moc.find({"plot" : {"$regex" : plot_word }}, {"title" :True,"_id" :False}).sort("title",asc)
        plot_list = list(plot_curs)
        # 空结果判断
        if not plot_list:
            print("无匹配")
        else:
            for p in plot_list:
                print(f"{p['title']}")
    else:
        sys.exit(0)
else:
    print("Unable to Connect")

核心修改点

  • 两个查询分支在将MongoDB游标转为结果列表后,新增空列表判断逻辑:如果列表长度为0(即无匹配数据),直接输出「无匹配」提示
  • 仅当结果列表非空时,才遍历输出匹配到的电影内容
  • 移除了原剧情查询分支中冗余的filter(None, plot_curs)逻辑:pymongo的find()返回的游标仅包含匹配的有效文档,不存在空值需要过滤
  • 修正了原剧情输出时多余的括号嵌套,保持代码格式简洁

内容的提问来源于stack exchange,提问作者Moayed Mahmoud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.09 16:15:42