猿问

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

我正在运行一个将一些数据推送到 MongoDB 数据库的脚本。现在我试图让另一个 Python 脚本在每次添加时在我的数据库上打印新条目。


例如:


如果将数字 80 添加到数据库中,则脚本应从集合中提取 80,并在将其添加到数据库后立即将其打印到我的控制台。


我的实际工作运行良好。唯一的问题是,如果我删除time.sleep()它,它将开始快速打印每个条目。


同样,现在,它不是打印新条目,而是打印整个集合 + 新条目,而不是仅打印新条目(我正在尝试这样做,因为将来我希望我的脚本获取数据并稍后将其提供给 Python 数组)。


我不能使用 change_stream,因为我的数据库不是副本集,我对此很陌生,所以我对副本集了解不多。

可以使用可尾游标,但使用有上限的数据库不是最好的选择,因为我将每 5 秒推送一次数据,并且有一个“限制”(这不是有上限的意思吗?)不会是最好的.

有什么建议吗?


from pymongo import MongoClient

import time

import random

from pprint import pprint


client = MongoClient(port=27017)


arr = []


db = client.one


mycol = client["coll"]




while True:

    cursor = db.mycol.find()

    for document in cursor:

        print(document['num'])

    time.sleep(2)    


梦里花落0921
浏览 154回答 2
2回答

MMTTMM

您可以节省文档的创建时间并重复查询自上次查询以来创建的文档:import datetimeimport time...last_query_time = 0while 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)
随时随地看视频慕课网APP

相关分类

Python
我要回答