如何通过_id获取MongoDB指定文档中数组的长度(PyMongo)
使用PyMongo获取指定文档中数组的长度
方法一:查询文档后计算长度(代码最简)
直接查询目标文档,取出数组字段后用Python的len()计算长度,适合数据量较小的场景:
from pymongo import MongoClient # 连接MongoDB实例 client = MongoClient('mongodb://localhost:27017/') # 指定数据库和集合 db = client['你的数据库名'] collection = db['你的集合名'] # 目标文档的_id target_id = "5678" # 查询文档并获取数组长度 doc = collection.find_one({"_id": target_id}) if doc and "arr" in doc: arr_len = len(doc["arr"]) print(arr_len) # 输出2 else: print("未找到目标文档或文档中无arr字段")
方法二:聚合查询直接计算(更高效)
通过MongoDB的聚合框架在数据库端计算数组长度,避免传输整个数组,适合大数据量场景:
from pymongo import MongoClient client = MongoClient('mongodb://localhost:27017/') db = client['你的数据库名'] collection = db['你的集合名'] target_id = "5678" # 聚合查询计算数组长度 try: result = collection.aggregate([ {"$match": {"_id": target_id}}, {"$project": {"arr_length": {"$size": "$arr"}}} ]).next() print(result["arr_length"]) # 输出2 except StopIteration: print("未找到目标文档")
注意事项
如果你的_id是MongoDB默认的ObjectId类型,需要先转换类型:
from bson.objectid import ObjectId target_id = ObjectId("替换为实际的ObjectId字符串")
内容的提问来源于stack exchange,提问作者Sonya gold
相关产品推荐
相关产品推荐

