我使用过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/

10-10 13:48
查看更多