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

如何用PyMongo将MongoDB中的数组提取为Python变量?

解决PyMongo从MongoDB提取数组转为Python列表的问题

你的代码里有两个关键问题导致无法拿到目标数组:

  • 插入数据时集合引用错误:你已经定义了collection = db['data'],但插入时用了db.collection.insert_one(record),这里的db.collection会被MongoDB当成名为"collection"的集合,而非你定义的"data"集合。
  • 查询返回的是游标而非直接结果:collection.find()返回的是一个游标对象,不是具体的文档数据,需要提取文档里的values字段才能得到数组。

修正后的代码示例

import pymongo
from pymongo import MongoClient

client = MongoClient("mongodb://localhost:27017/")

db = client['l']
collection = db['data']
x = [1,2,3,4,5]
record = {'_id': 'x', 'values': x}

# 修正插入语句,直接用已定义的collection对象
collection.insert_one(record)

# 用find_one查询单个文档(因为_id唯一)
document = collection.find_one({'_id': 'x'})
# 提取values字段,得到Python列表
target_list = document['values']

print(target_list)  # 输出: [1,2,3,4,5]

补充说明

  • 如果要查询多个包含指定数组的文档,遍历游标提取每个文档的values:
cursor = collection.find({'values': x})
all_lists = [doc['values'] for doc in cursor]
  • 用find({'values': x})是精确匹配整个数组,若要匹配包含部分元素的数组,需要用MongoDB的查询操作符(比如$in),但你的场景用精确匹配或按_id查询更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 10:05:29