2017-12-29 53 views
0

Wie kann ich Datenbankeinträge filtern, die eine datetime weniger als 60min in der Vergangenheit haben?mongodb Unterschied in der Zeit

habe ich versucht, einige Datum Operationen in mongodb mit zwei Feldern Zeitstempel und marketstartime wie folgt, dass in allen meinen Dokumente vom Typ Datum sind:

{"$subtract": ["$timestamp", "$marketstartime"]}

aber es gibt für diese Operation immer null. Warum?

Mein Zeitstempel und marketstartime Einträge in der db sind in Datumsart und wie folgt aussehen sollte dies korrekt sein: 2017-12-23 12:00:00.000Z

Die eigentliche Frage, die ich zu lösen bin versucht: Wie kann ich alle Einträge erhalten, die haben ein Zeitstempel von weniger als 60 Minuten in der Vergangenheit?

+0

Mögliches Duplikat von [Suchen von Objekten zwischen zwei Daten MongoDB] (https://stackoverflow.com/questions/2943222/find-objects-between-two-dates-mongodb) – Veeram

+0

Nein, es ist kein Duplikat . Bitte lesen Sie die Frage genauer. Danke – Nickpick

+1

Abstimmung zurückgezogen. Tut mir leid, ich wusste nicht, dass es Zeitunterschied zwischen zwei Datumsfeldern ist. Versuchen Sie, ein Beispieldokument aus Ihrer Sammlung und Ihrer vollständigen Abfrage hinzuzufügen. $ subtract sollte Ihnen einen Unterschied in Millisekunden geben. – Veeram

Antwort

1

Eine Abfrage kann für Dokumente erstellt werden, deren Wert timestamp vor weniger als 60 Minuten festgelegt wurde.

from datetime import datetime, timedelta 

query = { 
    '$timestamp': { 
     '$lt': datetime.now() + timedelta(minutes=-60) 
    } 
} 

cursor = db.collection.find(query) 
Verwandte Themen