2017-05-21 3 views
0

Ich habe einige Probleme mit dem Finden von Dokumenten mit einer heutigen Datumsfunktion durch Python.Abfrageproblem in Pymongo

Ich verwende die folgende Funktion:

datetime.datetime.now().date().strftime('%Y-%m-%d') 

, die den folgenden Wert ergibt: 2017-05-21

Allerdings haben die Werte in meine Dokumente (Mongo) Doppelsaiten befestigt ist, um es wie folgt aus: "2017-05-21"

So buchstäblich die obige Zeichenfolge ("2017-05-21") genau in meine Pymongo-Abfrage ausfüllen funktioniert wie ein Charme. Allerdings brauche ich die Dynamik der Datetime-Funktion, die aber leider nicht mit den doppelten String-Strings übereinstimmt, die ich für die Abfrage benötige.

Kennt jemand eine Problemumgehung? Ich habe bereits eine Replace-Funktion ausprobiert usw. Es erzeugt entweder doppelte Anführungszeichen innerhalb der Anführungszeichen oder tut nichts.

Antwort

0

Es klingt wie Ihre MongoDB-Dokumente falsch eingefügt wurden, Text für Datumsfelder statt BSON-Datumsangaben verwendend.

PyMongo konvertiert automatisch zwischen Python Datetimes und BSON Datetimes, so können Sie ein Dokument einfügen, die eine BSON Datetime wie folgt enthält:

dt = datetime.datetime.utcnow() 
collection.insert_one({'myDate': dt}) 

beweisen, dass Datumsvergleichen arbeiten jetzt wie folgt:

# There is a document with myDate in the past, now. 
print(collection.find_one({'myDate': {'$lt': datetime.datetime.utcnow()}})) 
# No document with myDate in the future. 
print(collection.find_one({'myDate': {'$gt': datetime.datetime.utcnow()}})) 
+0

Danke A. Jesse, ich habe deine Lösung noch nicht ausprobiert, kann aber schon spüren, dass es funktioniert. Danke vielmals!! – Gamelogic