我正在将 MongoDB 与 Python Web 应用程序一起使用。我想知道来自 mongodb 的通知,无论我在 mongodb 中进行了更改。我正在使用代码:
from pymongo import Connection
import time
MONGO_CONNECTION = MongoClient(settings.MONGO_CONNECTION_URL+"/"+settings.MONGO_DATABASE['NAME'], safe=True, j=True)
MONGO_DB = MONGO_CONNECTION[settings.MONGO_DATABASE['NAME']]
collection = MONGO_DB["id_64"]
cursor = collection.find(tailable=True)
while cursor.alive:
print "inside"
try:
doc = cursor.next()
print "new doc"
print doc
except StopIteration:
time.sleep(1)
我收到错误:
OperationFailure: database error: Unable to execute query: error processing query: ns=scisphere.orgid_64 limit=0 skip=0
Tree: $and
Sort: {}
Proj: {}
tailable cursor requested on non capped collection
所以帮我看看我做错了什么。
Thanks.
MongoDB 3.6 https://www.mongodb.com/mongodb-3.6支持$changeStream
观察集合变化的功能。
例如使用与 MongoDB 3.6 兼容的 PyMongo:
for change in db.collection.watch():
print(change)
当迭代期间遇到潜在的可恢复错误时,返回的 ChangeStream 会自动恢复。恢复过程对应用程序是透明的,并确保不会丢失更改流文档。
另一个使用以下命令查看集合上发生的所有插入的示例PyMongo https://api.mongodb.com/python/current/:
try:
for insert_change in db.collection.watch(
[{'$match': {'operationType': 'insert'}}]):
print(insert_change)
except pymongo.errors.PyMongoError:
# We know it's unrecoverable:
log.error('...')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)