我使用过python和mongodb。为了连接到mongo,我使用python模块pymongo。正如我从非常抽象和小的文档中看到的。似乎大多数东西的工作原理与在普通MongoDB集合中一样。但有一个奇怪的部分与查找查询相关。
在Mongo Shell中:
db.my_collection.find({}, {})
Results Array Fields: { _id, field1, field1, field3 ..... etc}
//Notice: Returning all Fields of each Document
在python shell中:
pymonogoMongoClient("localhost", 27017)['DB']['my_collection'].find({}, {})
Results Array Fields: {_id}
Notice // Only Id is returning for all Docs
我知道在find的第二个参数中不指定空{}可以得到所需的结果,但这不是我的代码设计所允许的。我正在为flask应用程序创建一种orm,在这里我必须编写通用数据库函数。这是不允许的。
如果您能提供任何帮助或通过争论获得所有文件,我们将不胜感激。提前谢谢
最佳答案
根据documentation这就是发生这种情况的原因:
投影(可选):应返回的字段名列表
在结果集中或指定要包含或
排除。如果投影是列表,则始终返回“\u id”。使用A
从结果中排除字段的dict(例如projection={“id”:
错误})。
不过,你能做的是:
if projection == {}:
projection = None
pymonogoMongoClient("localhost", 27017)['DB']['my_collection'].find({}, projection)
关于python - Pymongo只在传递空对象时返回id字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50485329/