2016-04-11 12 views
2

Ich habe den folgenden Code:Kann nicht Zeitstempel von mongodb drucken oplog mit pymongo

connection = MongoClient('core.mongo.com', 27017) 
db = connection['admin'] 

first = db.oplog.rs.find().sort('$natural', pymongo.DESCENDING).limit(-1).next() 
ts = first['ts'] 

while True: 
    cursor = db.oplog.find({'ts': {'$gt': ts}}, tailable=True, await_data=True) 
    while cursor.alive: 
     for doc in cursor: 
      ts = doc['ts'] 
     time.sleep(1) 

ich:

Traceback (most recent call last): 
    File "tail.py", line 25, in <module> 
    ts = first['ts'] 
    File "/Library/Python/2.7/site-packages/pymongo/cursor.py", line 569, in __getitem__ 
    "instances" % index) 
TypeError: index 'ts' cannot be applied to Cursor instances 

Wie soll ich die aktuellen Zeitstempel aus dem oplog der bekommen Mongo-Datenbank?

Antwort

0

folgender Code gibt mir die letzte Operation auf database_name.collection_name:

connection = MongoClient('core.mongo.com', 27017) 
db = connection['admin'] 

oplog_str = str(connection.local.oplog.rs) 
print oplog_str 

new_query = {'ns': {'$in': ['database_name.collection_name']}} 

curr = connection.local.oplog.rs.find(new_query).sort('$natural', pymongo.DESCENDING).limit(-1) 

for doc_count, doc in enumerate(curr): 
    current_time_stamp = doc['ts'].time 
    good_date = datetime.datetime.fromtimestamp(current_time_stamp).ctime() 
    print doc_count, good_date 

Wenn Sie den Vorgang unabhängig von der Datenbank und Sammlung wollen, nur new_query von curr entfernen.

Verwandte Themen