Pymongo只在传递空对象时返回id字段

时间:2018-05-23 10:00:17

标签: python mongodb pymongo

我使用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,我必须编写通用数据库函数。这是不允许的。

任何帮助或通过传递参数来获取所有文件都将不胜感激。提前致谢

1 个答案:

答案 0 :(得分:1)

根据documentation,这就是为什么会发生这种情况:

  

projection(可选):应返回的字段名列表   在结果集或指定要包含或的字段的字典中   排除。如果投影是一个列表,将始终返回“_id”。用一个   dict从结果中排除字段(例如projection = {'_ id':   假})。

但你可以做的是:

if projection == {}:
    projection = None

pymonogoMongoClient("localhost", 27017)['DB']['my_collection'].find({}, projection)