2016-06-19 2 views
2

Ich habe einen DB mit „Konten“ Sammlung wie folgt aus:Dokument in MongoDB-Sammlung basierend auf Zeitbedingung suchen und Zeitstempel zurück schreiben?

{u'timestamp': u'2016-06-09 23:29:50.083093', u'account': u'admin:password', u'_id': ObjectId('5766932f6f340ca9a70cdb16'), u'is_valid': u'True'} 

Ich brauche ein Dokument auszuwählen, basierend auf dieser Bedingung: wenn is_valid wahr ist und wenn Zeitstempel 24 Stunden vergangen. So sollte es sein Wahre und aktuelle Zeit 2016-06-10 23: 29: 50.083093, um die Bedingung zu bestehen. Dann muss ich den Zeitstempel dieses Dokuments mit der aktuellen Zeit aktualisieren.

Wie kann ich das erreichen? Ich weiß, wie die erste Bedingung gelten:

import pymongo 
from datetime import datetime 

try: 
    conn=pymongo.MongoClient() 
    db = conn.instagram 
    collection = db.accounts 
    res = collection.find_one({"is_valid": "True"}) 
    print res 
except pymongo.errors.ConnectionFailure, e: 
    print "Could not connect to MongoDB: %s" % e 

Antwort

3

Verwenden Sie die $lt operator mit einer datetime Instanz als Argument übergeben:

from datetime import datetime, timedelta 

dt = datetime.now() - timedelta(hours=24) 
res = collection.find_one({"is_valid": "True", "timestamp": {"$lt": dt}}) 
+0

Hm, keine zurückgibt. –

+1

Hinzugefügt "str" ​​'{" $ lt ": str (dt)}})' und es funktioniert, danke! –

Verwandte Themen