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

使用OCI SDK获取用量数据存入MongoDB时遇非空列表错误求解决

解决MongoDB插入时"documents must be a non-empty list"错误

错误原因

这个错误直接说明你传给MongoDB批量插入方法(比如insert_many())的文档列表是空的,根源要么是从OCI SDK获取的用量数据本身为空,要么是数据处理过程中把列表弄空了。

排查与解决步骤

  • 检查OCI SDK返回的原始数据

    • 在调用MongoDB插入前,先打印或记录OCI API返回的响应数据,重点看response.data.items(OCI用量API的返回结构)是否有内容。
    • 核对API调用参数:确认时间范围是否覆盖了有用量的时段,compartment ID是否正确,你的OCI账号是否有该compartment下资源的用量读取权限。如果参数错误或权限不足,API会返回空数据。
  • 排查数据处理逻辑

    • 检查你从OCI响应中提取、转换数据的代码,有没有误过滤所有数据的情况。比如用列表推导式时条件过于严格,或者转换字段时遗漏了所有元素。
    • 示例:如果你的代码是docs = [convert_to_mongo_format(item) for item in oci_data if item.usage > 0],但该时段所有资源用量都是0,就会生成空列表。
  • 添加空列表判断

    • 在执行MongoDB插入前,先判断文档列表是否为空,避免无效调用:
      # 假设get_oci_usage_data()是你获取并处理数据的函数
      usage_docs = get_oci_usage_data()
      if usage_docs:
          mongo_collection.insert_many(usage_docs)
      else:
          print("提示:无可用用量数据,跳过MongoDB插入")
      
  • 验证MongoDB方法调用

    • 确认你调用的是正确的MongoDB方法:如果插入单个文档,用insert_one();批量插入才用insert_many()。不要把单个空文档包装成列表传入insert_many(),这也会触发错误。

内容的提问来源于stack exchange,提问作者Bagadi Gopichand

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 20:06:28