如何使用Python仅打印MongoDB集合中文档的字段值?
要实现只输出文档的字段值、不显示字段名的需求,你可以通过提取每个文档的值集合来处理,直接打印这些值就行。这里分两种场景给你方案:
方案1:输出所有字段的值(包括_id)
注意ObjectId类型不能直接参与字符串拼接,所以要先把它转换成字符串。修改后的代码如下:
from bson.objectid import ObjectId # 记得导入ObjectId类 x = list(coll.find()) for row in x: # 遍历每个文档的值,把ObjectId转为字符串,其他值统一转成字符串方便拼接 field_values = [] for val in row.values(): if isinstance(val, ObjectId): field_values.append(str(val)) else: field_values.append(str(val)) # 用逗号分隔值,你也可以换成空格、制表符等 print(', '.join(field_values))
运行后输出示例:
USA, 35.0, 5c481307c45c2d388de3b4ba, 11.0, Sachin India, 33.0, 5c481307c45c2d388de3b4bb, 12.0, Rahul China, 36.0, 5c481307c45c2d388de3b4bc, 13.0, Yadav UK, 32.0, 5c481307c45c2d388de3b4bd, 14.0, Jadhav Japan, 30.0, 5c481307c45c2d388de3b4be, 15.0, Rohit Germany, 45, 5c4aa2f0f2f8ba463102fd76, 80, Rahul
方案2:排除_id字段,只输出业务字段的值
如果不需要_id,可以在查询时直接过滤掉它,代码会更简洁:
# 查询时指定投影,排除_id字段 x = list(coll.find({}, {'_id': 0})) for row in x: # 直接提取值并拼接 print(', '.join(map(str, row.values())))
这个方案的输出示例:
USA, 35.0, 11.0, Sachin India, 33.0, 12.0, Rahul China, 36.0, 13.0, Yadav UK, 32.0, 14.0, Jadhav Japan, 30.0, 15.0, Rohit Germany, 45, 80, Rahul
你可以根据实际需求选一种,要是需要调整值之间的分隔符,修改join里的参数就好~
内容的提问来源于stack exchange,提问作者Rahul Darna
相关产品推荐
相关产品推荐

