我使用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,我必须编写通用数据库函数。这是不允许的。
任何帮助或通过传递参数来获取所有文件都将不胜感激。提前致谢
答案 0 :(得分:1)
根据documentation,这就是为什么会发生这种情况:
projection(可选):应返回的字段名列表 在结果集或指定要包含或的字段的字典中 排除。如果投影是一个列表,将始终返回“_id”。用一个 dict从结果中排除字段(例如projection = {'_ id': 假})。
但你可以做的是:
if projection == {}:
projection = None
pymonogoMongoClient("localhost", 27017)['DB']['my_collection'].find({}, projection)