What is the Python version of Object.keys()?
假设我用pymongo指定一个mongodb光标,它不包括结果集中的所有字段,如下所示:
1 2 3
| from pymongo import MongoClient
conn = MongoClient('mongodb://localhost:27017')
cur = conn['my_db']['my_collection'].find({},{'_id' : 0, 'my_unwanted_field' : 0}) |
是否有函数或属性将返回cur中存在的字段的名称?
在使用findOne的mongo shell上,类似的东西是:
1 2 3 4
| > var cur = findOne({},{'_id' : 0, 'my_unwanted_field' : 0})
> Object.keys(cur)
["field_1", ... ,"field_n"] |
- @blakes7我认为你提到的问题与pymongo或mongodb无关
- 当然,这不是关于蒙古族的。返回的对象是常规的python对象。因此,你的"问题"并不是专门与蒙古有关。
- @布莱克七号,如果我不清楚地告诉你,我很抱歉。我最初的问题是从pymongo.cursor.Cursor对象中获取字段名,而不是从"常规"python对象中获取字段名。无论如何,我认为C不会帮助我,因为我还不熟悉这种语言。
- .find_one()的结果不是光标。迭代光标时返回的任何内容(应该使用.find())也只是一个普通对象。您不能从光标中获取键。
- 是的,也许我应该在我的问题中提到这一点。这对我来说更像是琐事。我可以只进行一次cur迭代,提取dict的键。然而,我正在努力寻找是否可以做同样的事情,没有我刚才提到的方法,或者使用find_one方法。
- 它是一个dict/object/hash(任何可以浮在船上的东西),而链接的副本是您如何执行在python中所要求的操作。没有任何与pymongo或mongodb相关的内容。这就是为什么你的标题和标签被更改的原因。只要按照链接问题上的回答做就行了。
- jeez Object.keys()是javascript,与mongodb没有任何关系。每个MongoDB驱动程序都返回一个基本的对象形式,并且通常是语言中支持的通用形式。像Python一样。
- @souradeep-如果您希望一个光标具有关于集合文档中字段的信息,那么您不应该像mongo那样使用无模式的db。由于集合的文档对于它们定义或不定义的字段是完全不受约束的,所以实际上没有获取文档的键的概念,除了迭代每个文档并分别获取其键()之外。即使您迭代到第一个dict并提取它的键,也不能保证其余的文档都具有相同的内容。
使用循环迭代cursor对象,然后使用.keys()获取任何常规python dict的键,如下所示:
1 2
| for item in cur:
print item.keys() |
- 这对于返回cursor对象的.find()操作的结果是正确的。但是,贴出的问题需要来自.find_one()的密钥,当然,哪个只返回标准的dict。无论如何,不会增加副本中提供的内容。