为了账号安全,请及时绑定邮箱和手机立即绑定

Python - 如何从我的 MongoDB 集合“流”数据?

Python - 如何从我的 MongoDB 集合“流”数据?

梦里花落0921 2021-08-17 10:10:36
我正在运行一个将一些数据推送到 MongoDB 数据库的脚本。现在我试图让另一个 Python 脚本在每次添加时在我的数据库上打印新条目。例如:如果将数字 80 添加到数据库中,则脚本应从集合中提取 80,并在将其添加到数据库后立即将其打印到我的控制台。我的实际工作运行良好。唯一的问题是,如果我删除time.sleep()它,它将开始快速打印每个条目。同样,现在,它不是打印新条目,而是打印整个集合 + 新条目,而不是仅打印新条目(我正在尝试这样做,因为将来我希望我的脚本获取数据并稍后将其提供给 Python 数组)。我不能使用 change_stream,因为我的数据库不是副本集,我对此很陌生,所以我对副本集了解不多。可以使用可尾游标,但使用有上限的数据库不是最好的选择,因为我将每 5 秒推送一次数据,并且有一个“限制”(这不是有上限的意思吗?)不会是最好的.有什么建议吗?from pymongo import MongoClientimport timeimport randomfrom pprint import pprintclient = MongoClient(port=27017)arr = []db = client.onemycol = client["coll"]while True:    cursor = db.mycol.find()    for document in cursor:        print(document['num'])    time.sleep(2)    
查看完整描述

2 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

您可以节省文档的创建时间并重复查询自上次查询以来创建的文档:


import datetime

import time

...


last_query_time = 0

while True:

    now = datetime.datetime.now()

    cursor = db.mycol.find({'created': {'$gt': last_query_time}})

    last_query_time = now

    for document in cursor:

        print(document['num'])

    time.sleep(2)


查看完整回答
反对 回复 2021-08-17
  • 2 回答
  • 0 关注
  • 153 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信