为什么在尝试通过 pymongo 查询我的 mongodb 数据库时会得到 pymongo.cursor.Cursor?

2024-04-21

我在 mongodb 数据库中消费了一堆推文。我想使用 pymongo 查询这些推文。例如,我想查询 screen_name。但是,当我尝试执行此操作时,python 不会返回推文,而是返回有关 pymongo.cursor.Cursor 的消息。这是我的代码:

import sys
import pymongo
from pymongo import Connection
connection = Connection()
db = connection.test
tweets = db.tweets
list(tweets.find())[:1]

我得到一个 JSON,如下所示:

{u'_id': ObjectId('51c8878fadb68a0b96c6ebf1'),
 u'contributors': None,
 u'coordinates': {u'coordinates': [-75.24692983, 43.06183036],
  u'type': u'Point'},
 u'created_at': u'Mon Jun 24 17:53:19 +0000 2013',
 u'entities': {u'hashtags': [],
  u'symbols': [],
  u'urls': [],
  u'user_mentions': []},
 u'favorite_count': 0,
 u'favorited': False,
 u'filter_level': u'medium',
 u'geo': {u'coordinates': [43.06183036, -75.24692983], u'type': u'Point'},
 u'id': 349223725943623680L,
 u'id_str': u'349223725943623680',
 u'in_reply_to_screen_name': None,
 u'in_reply_to_status_id': None,
 u'in_reply_to_status_id_str': None,
 u'in_reply_to_user_id': None,
 u'in_reply_to_user_id_str': None,
 u'lang': u'en',
 u'place': {u'attributes': {},
  u'bounding_box': {u'coordinates': [[[-79.76259, 40.477399],
     [-79.76259, 45.015865],
     [-71.777491, 45.015865],
     [-71.777491, 40.477399]]],
   u'type': u'Polygon'},
  u'country': u'United States',
  u'country_code': u'US',
  u'full_name': u'New York, US',
  u'id': u'94965b2c45386f87',
  u'name': u'New York',
  u'place_type': u'admin',
  u'url': u'http://api.twitter.com/1/geo/id/94965b2c45386f87.json'},
 u'retweet_count': 0,
 u'retweeted': False,
 u'source': u'<a href="http://twitter.com/download/iphone" rel="nofollow">Twitter for iPhone</a>',
 u'text': u'Currently having a heat stroke',
 u'truncated': False,
 u'user': {u'contributors_enabled': False,
  u'created_at': u'Fri Oct 28 02:04:05 +0000 2011',
  u'default_profile': False,
  u'default_profile_image': False,
  u'description': u'young and so mischievious',
  u'favourites_count': 1798,
  u'follow_request_sent': None,
  u'followers_count': 368,
  u'following': None,
  u'friends_count': 335,
  u'geo_enabled': True,
  u'id': 399801173,
  u'id_str': u'399801173',
  u'is_translator': False,
  u'lang': u'en',
  u'listed_count': 0,
  u'location': u'Upstate New York',
  u'name': u'Joe Catanzarita',
  u'notifications': None,
  u'profile_background_color': u'D6640D',
  u'profile_background_image_url':           u'http://a0.twimg.com/profile_background_images/702001815/f87508e73bbfab8c8c85ebe10b29fcf6.png',
  u'profile_background_image_url_https':     u'https://si0.twimg.com/profile_background_images/702001815/f87508e73bbfab8c8c85ebe10b29fcf6.png',
  u'profile_background_tile': True,
  u'profile_banner_url': u'https://pbs.twimg.com/profile_banners/399801173/1367200323',
  u'profile_image_url':     u'http://a0.twimg.com/profile_images/378800000012256721/d8b5f801fb331de6ead4aed42dc77a46_normal.jpeg',
  u'profile_image_url_https':   u'https://si0.twimg.com/profile_images/378800000012256721/d8b5f801fb331de6ead4aed42dc77a46_normal.jpeg'    ,
  u'profile_link_color': u'140DE0',
  u'profile_sidebar_border_color': u'FFFFFF',
  u'profile_sidebar_fill_color': u'E0F5A6',
  u'profile_text_color': u'120212',
  u'profile_use_background_image': True,
  u'protected': False,
  u'screen_name': u'JoeCatanzarita',
  u'statuses_count': 6402,
  u'time_zone': u'Quito',
  u'url': None,
  u'utc_offset': -18000,
  u'verified': False}}

但是,当我尝试查询此 screen_name 时,我得到:

tweets.find({"screen_name": "JoeCatanzarita"})
<pymongo.cursor.Cursor at 0x52c02f0>

当我尝试计算具有“screen_name”:“name”的推文数量时,我得到:

tweets.find({"screen_name": "name"}).count()
0

知道我做错了什么/如何让 pymongo 返回我正在寻找的推文?

Thanks!


PyMongo 的 find() 方法返回一个 Cursor。要实际在服务器上执行查询并检索结果,请使用以下命令迭代游标list或 for 循环:

for doc in tweets.find({'screen_name': 'name'}):
    print(doc)

# Or:
docs = list(tweets.find({'screen_name': 'name'}))

If tweets.find({"screen_name": "name"}).count()返回 0,这意味着没有文档与您的查询匹配。

编辑:既然您已经发布了示例文档,我看到您想要查询如下:

list(tweets.find({'user.screen_name': 'name'}))

...自从screen_name字段嵌入在user子文档。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么在尝试通过 pymongo 查询我的 mongodb 数据库时会得到 pymongo.cursor.Cursor? 的相关文章

随机推荐

  • 如何通过过滤计算 Vaadin 8 网格页脚中的总计

    我知道我必须使用grid getDataProvider 得到ListDataProvider 假设我发送了List to grid setItems 在其他计算页脚总数中我这样做 Collection myItems ListDataPr
  • 从另一个域重定向时 Django 会话被丢弃

    当用户访问我的域时 django 会发出一个 sessionid 当他尝试使用 Facebook 进行 Oauth 时 他单击我网站上的一个按钮 该按钮会重定向到 Facebook com Facebook 重定向回我的域 但此时 用户的会
  • 在 UIImageView 上添加不透明度为 0.3 的黑色覆盖层

    我有一个 UIImageView 我想在它上面添加一个黑色覆盖层 在不必重写drawRect的情况下执行此操作的最佳方法是什么 我正在考虑在其上添加一个 CALayer 但不确定如何获得具有 0 3 alpha 的黑色 CALayer 像这
  • EF Code First 现有数据库

    首先使用 EF 4 1 代码我想停止 EF 从模型创建数据库 据我了解 如果您传递 Connectionstring 名称 它将使用该连接字符串中的现有数据库 但是 如果数据库不存在 那么它将创建数据库 将所有表形成模型
  • MYSQL DATE 函数在 LEFT JOIN 中运行速度极慢

    添加行时 LEFT JOIN core records sales as sales ON DATE appointments date DATE sales date sold 根据我的查询 它将脚本的运行时间从大约 8 秒增加到 2 3
  • 如何在manim中一个接一个地应用两个变换?

    我想申请两个线性变换矩阵一个接一个地在manimce 以下是一次转换的代码 from manim import class LT LinearTransformationScene def init self LinearTransform
  • 回调函数含义

    javascript中的回调函数是什么意思 JavaScript 的 回调 是函数对象 可以传递给其他函数 例如函数指针或委托函数 然后在函数完成时或需要时调用 例如 您可以有一个主函数 您可以向该函数传递一个它将调用的函数 主要功能可以如
  • Android Studio升级到Arctic Fox后出现奇怪的代码子窗口(2020.3.1)

    在 Android Studio 升级到 Arctic Fox 版本后 我的代码编辑器中现在出现了这些奇怪的子窗口 但我无法摆脱它们 如果我单击 2 个子窗口中的任何一个 顶部的单行窗口或下面的 5 行窗口 见下图 它会滚动到有问题的代码
  • Laravel 路由使用 nginx 覆盖 phpmyadmin 路径

    我的 LEMP Droplet 上有以下 nginx 配置 server listen 80 default server listen 80 default server ipv6only on root var www html pub
  • 在 C 中为 fgets 创建超时[重复]

    这个问题在这里已经有答案了 我的目的是创建一个 tfgets 函数 tfgets 与 fget 类似 只是它的超时时间为 1 秒 如果 1 秒内没有收到输入 则程序返回 NULL 否则 它将返回 fgets 返回的任何内容 如何为 tfge
  • Gson: [Class] 声明多个名为 [property] 的 JSON 字段

    我正在尝试使用以下 POJO 序列化为 JSONGson https github com google gson public class Member private long id private long customerAccou
  • Pytest 适用于旧的模拟,但不适用于 unittest.mock

    我正在将一些代码从 Python 2 移植到 3 并且py test玩得不好patch装饰器来自unittest mock 当我使用patch装饰器将模拟传递到测试函数的参数中 py test相反 将该参数解释为固定装置 并且无法设置测试
  • 如何在使用用户限制资源访问保护的 python eve api 中创建新用户帐户

    我首先使用 python eve 框架创建了一个 Web api 无需身份验证或用户帐户 效果非常好 我现在正在尝试添加身份验证和用户帐户 但遇到了一些困难 我想使用用户限制的资源访问 但是如果资源受到限制 用户如何创建新的用户帐户 我缺少
  • 如何从数据库中删除字段?

    当我单击该图标时 所单击的新闻字段将添加到数据库中 final fireStore FirebaseFirestore instance IconButton onPressed async newsController addNews a
  • 区分大小写的 SQL 区分大小写

    我正在尝试请求一个区分大小写的结果 例如在我的数据库中我有 ABCdef abcDEF abcdef 请求是 SELECT FROM table WHERE col abcdef 但我有 3 行结果 我只想要 abcdef 我尝试找到解决方
  • 如何获取 Kendo DropDownList 的选定值

    我不知道如何确定在我的剑道下拉列表中选择了哪个项目 我的观点将其模型定义为 model KendoApp Models SelectorViewModel ViewModel 定义为 public class SelectorViewMod
  • Postmessage 和 sendmessage 的替代方案

    我有一个程序 它使用多个线程来执行某些任务 每个线程都有一堆任务要执行 执行其中之一后 每个线程都会向主屏幕调用一条发布消息来更新日志 现在我有六万个任务 每个线程一万个 六个线程 执行每个任务线程后调用发布消息 但由于这些帖子消息 我的应
  • C# 数组还是字典?

    我想知道 C 数组的访问速度是否恒定 我需要在静态数组中存储 1000 个项目 这些项目将在服务器启动期间初始化 该数组将被只读使用 所以数组不会发生任何变化 我应该使用简单的 C 数组 new MyClass 还是字典 我对 C 非常陌生
  • 从 jQuery 中的标签获取值

    a href at privat class Privat Privat a 我需要一个 Jquery 来从上面的链接获取私有的 我在这里尝试过 Privat click function e e preventDefault alert
  • 为什么在尝试通过 pymongo 查询我的 mongodb 数据库时会得到 pymongo.cursor.Cursor?

    我在 mongodb 数据库中消费了一堆推文 我想使用 pymongo 查询这些推文 例如 我想查询 screen name 但是 当我尝试执行此操作时 python 不会返回推文 而是返回有关 pymongo cursor Cursor