2016-07-07 11 views
1

私はPython WebアプリケーションでMongoDBを使用しています。私はmongodbから何が変わったとしても、mongodbからの通知を知りたい。私はコードを使用しています:Pythonでの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 

は、だから私はやって何が間違っている私を助けて。

ありがとうございました。

ユーザ名:コレクションからPPRINTインポートPPRINT から pymongo

答えて

-1

輸入は、c = pymongo.Connection( "//あなたのIPアドレスを入力するMongoDB")

itemgetterオペレータのインポートから OrderedDict インポートコレクションをインポートします= '学習' パスワード= '************'

C [ '学習']。認証(ユーザー名、パスワード) プリント "に作成した接続"DB = Cの[ '学習'] 収集=デシベル[ 'order_info']

カーソルN = collection.find()

プリント "\ ************* ********ディスプレイデータベース*************************** "

カーソルのドキュメント: pprint(文書)

+0

を –

1

MongoDB 3.6サポート$changeStreamコレクションの変更を見る機能。 MongoDBの3.6と互換性のPyMongoを使用して、例えば

for change in db.collection.watch(): 
     print(change) 

ChangeStreamは、それが反復中に潜在的に回復可能なエラーが発生したときに自動的に再開返さ。再開プロセスはアプリケーションに透過的であり、変更ストリームドキュメントが失われないことを保証します。

PyMongoを使用して、コレクションに起こっているすべての挿入を監視するもう一つの例:私は、これが参考になっことを願っています

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('...') 
関連する問題