如何使用 Pymongo return 特定字段和 MongoDB?
How to return a specific fields using Pymongo and MongoDB?
我正在尝试 return 我的 MongoDB 数据库中的两个字段,这个查询正确地发回了我的用户名和来自客户端的帖子:
db.users.find({'email_address': /^johnny/}, {'username': 1, 'user_posts': 1, '_id': 0});
我正在尝试将其切换到 PyMongo,以便我可以在 Python 中进行查询,我的查询如下所示:
regx = Regex('^{0}'.format('johnny'))
query = {'postcode': regx}, {'username': 1, 'user_posts': 1, '_id': 0}
user_list = mycol.find(query).limit(5)
失败的地方在这里:
{'username': 1, 'user_posts': 1, '_id': 0}
如果没有此过滤器,文档将被完整发送。有了这个我从 PyMongo 得到这个错误信息:
TypeError: filter must be an instance of dict, bson.son.SON, or any other type that inherits from collections.Mapping
我认为我的过滤器格式不正确,它不再是字典,因此尝试了各种替代方法,先用引号括起来,然后再使用 .format() 等,但似乎无法实现神奇的组合。
事实证明这很容易..我只需要有两本词典。 1 个用于查询,另一个用于过滤器。
regx = Regex('^{0}'.format('johnny'))
filter_stuff = {'username': 1, 'user_posts': 1, '_id': 0}
然后按如下方式构建完整查询:
user_list = mycol.find(query, filter_stuff).limit(5)
问题是以下不是字典,而是两个字典的元组:
query = {'postcode': regx}, {'username': 1, 'user_posts': 1, '_id': 0}
如果您想直接使用它,您可以使用
user_list = mycol.find(query[0], query[1]).limit(5)
但可能最好像这样将它实际分配给两个单独的变量
query, filter = {'postcode': regx}, {'username': 1, 'user_posts': 1, '_id': 0}
然后
user_list = mycol.find(query, filter).limit(5)
我正在尝试 return 我的 MongoDB 数据库中的两个字段,这个查询正确地发回了我的用户名和来自客户端的帖子:
db.users.find({'email_address': /^johnny/}, {'username': 1, 'user_posts': 1, '_id': 0});
我正在尝试将其切换到 PyMongo,以便我可以在 Python 中进行查询,我的查询如下所示:
regx = Regex('^{0}'.format('johnny'))
query = {'postcode': regx}, {'username': 1, 'user_posts': 1, '_id': 0}
user_list = mycol.find(query).limit(5)
失败的地方在这里:
{'username': 1, 'user_posts': 1, '_id': 0}
如果没有此过滤器,文档将被完整发送。有了这个我从 PyMongo 得到这个错误信息:
TypeError: filter must be an instance of dict, bson.son.SON, or any other type that inherits from collections.Mapping
我认为我的过滤器格式不正确,它不再是字典,因此尝试了各种替代方法,先用引号括起来,然后再使用 .format() 等,但似乎无法实现神奇的组合。
事实证明这很容易..我只需要有两本词典。 1 个用于查询,另一个用于过滤器。
regx = Regex('^{0}'.format('johnny'))
filter_stuff = {'username': 1, 'user_posts': 1, '_id': 0}
然后按如下方式构建完整查询:
user_list = mycol.find(query, filter_stuff).limit(5)
问题是以下不是字典,而是两个字典的元组:
query = {'postcode': regx}, {'username': 1, 'user_posts': 1, '_id': 0}
如果您想直接使用它,您可以使用
user_list = mycol.find(query[0], query[1]).limit(5)
但可能最好像这样将它实际分配给两个单独的变量
query, filter = {'postcode': regx}, {'username': 1, 'user_posts': 1, '_id': 0}
然后
user_list = mycol.find(query, filter).limit(5)