Pymongo.find()只返回答案

7
我是一个有用的助手,可以为您翻译文本。
我正在开发一段代码,使用pymongo从数据库中获取数据。然后我将使用Tkinter在GUI中显示它。
我正在使用

(此处缺失信息,无法翻译完整句子)
.find()

查找特定文档。但我只想显示“名称”,而不需要其他内容。所以我使用了{"name":1},现在它返回:

{u'name':u'**returned_name**'}

如何删除 u'name': 使其只返回 returned_name

提前感谢,

Max

附言:我在网上搜索了很多,但没找到任何能帮助我的论据。


1
请注意,如果您不想对整个问题进行格式化,请至少将您的代码排版。这样的排版无法阅读更不用说修复了。 - jimkokko5
我会努力让它更加清晰易懂一些。 - Maxim
2个回答

7
你看到的find()调用返回的是一个游标。只需迭代游标并通过每个找到的文档的name键获取值即可:
result = db.col.find({"some": "condition"}, {"name": 1})
print([document["name"] for document in result])

作为结果,您将获得一个名称列表。
或者,如果您希望并期望匹配单个文档,请使用find_one()
document = db.col.find_one({"some": "condition"}, {"name": 1})
print(document["name"])

0
Mongo会返回带有键的数据,但是你可以使用类似这样的解决方法。
var result = []
db.Resellers_accounts.find({"name":1, "_id":0}).forEach(function(u) { result.push(u.name) })

这个例子是针对NodeJS驱动程序的,类似的操作也可以在Python中完成

编辑(Python代码) -

res = db.Resellers_accounts.find({},{"name":1, "_id":0})
result = []
for each in res:
    result.append(res['name'])

编辑2 - 不,pymongo不支持仅返回值,MongoDB中的所有内容都是键值对。


这并不能解决问题,因为每个文档仍然从数据库返回关键字名称。但是从问题中并不清楚这是一个问题。 - Steve Rossiter
这不是问题,操作者只是想节省一步,获取所有的值。 - Ashwani Agarwal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接