Wie man eine Abfrage Datum in mongodb mit pymongo?
Ich versuche zum ausführen einer Abfrage das Datum in mongodb, aber das Ergebnis ist immer leer.
Meine Abfrage lautet wie folgt:
//in the begin code
def __init__(self):
self.now = datetime.now()
self.db = conexaoMongo()
self.horaInicio = self.now - timedelta(minutes=1)
def resultadoConsulta(self, modo, porta, id_node):
#print "Porta e No ", porta, id_node
resultadoMongo = []
mediaFinal = False
try:
json = {'id_no': int(id_node), 'datahora': {'$gte': self.horaInicio, '$lt': self.now}, 'porta': porta}
print "COnsulta a ser realizada: ", json
resultadoMongo = self.db.queryMongoOne(json)
//variable resultaMongo leer zurück.
Obs: ich habe auch versucht, ohne Verwendung .isoformat()
Wenn ich in mongodb direkt, sondern nur Ergebnisse zurück, wenn ich Isodatum.
Also zurück keine Ergebnisse:
db.inoshare.find( {'id_no': 1, 'datahora': {'$lte': '2014-09-24T07:52:04.945306', '$gte': '2014-09-24T07:51:04.958496'}, 'porta': 'A0'})
Mehr so, wenn Sie Bearbeiten Retouren:
db.inoshare.find( {'id_no': 1, 'datahora': {'$lte': ISODate('2014-09-24T07:52:04.945306'), '$gte': ISODate('2014-09-24T07:51:04.958496')}, 'porta': 'A0'})
Dies ist eine Reihenfolge der Datensätze in der Datenbank:
{ "_id" : ObjectId("5435be9ce7b9916e02ed2cb5"), "lab" : "2", "porta" : "A0", "id_no" : 1, "datahora" : ISODate("2014-09-24T07:51:05Z"), "valor" : "917", "sensor" : "1" }
{ "_id" : ObjectId("5435be9ce7b9916e02ed2cb9"), "lab" : "2", "porta" : "A0", "id_no" : 1, "datahora" : ISODate("2014-09-24T07:51:07Z"), "valor" : "932", "sensor" : "1" }
{ "_id" : ObjectId("5435be9ce7b9916e02ed2cbd"), "lab" : "2", "porta" : "A0", "id_no" : 1, "datahora" : ISODate("2014-09-24T07:51:09Z"), "valor" : "189", "sensor" : "1" }
{ "_id" : ObjectId("5435be9ce7b9916e02ed2cc1"), "lab" : "2", "porta" : "A0", "id_no" : 1, "datahora" : ISODate("2014-09-24T07:51:11Z"), "valor" : "853", "sensor" : "1" }
{ "_id" : ObjectId("5435be9ce7b9916e02ed2cc5"), "lab" : "2", "porta" : "A0", "id_no" : 1, "datahora" : ISODate("2014-09-24T07:51:13Z"), "valor" : "202", "sensor" : "1" }
{ "_id" : ObjectId("5435be9ce7b9916e02ed2cc9"), "lab" : "2", "porta" : "A0", "id_no" : 1, "datahora" : ISODate("2014-09-24T07:51:15Z"), "valor" : "398", "sensor" : "1" }
{ "_id" : ObjectId("5435be9ce7b9916e02ed2ccd"), "lab" : "2", "porta" : "A0", "id_no" : 1, "datahora" : ISODate("2014-09-24T07:51:17Z"), "valor" : "947", "sensor" : "1" }
{ "_id" : ObjectId("5435be9ce7b9916e02ed2cd1"), "lab" : "2", "porta" : "A0", "id_no" : 1, "datahora" : ISODate("2014-09-24T07:51:19Z"), "valor" : "57", "sensor" : "1" }
{ "_id" : ObjectId("5435be9ce7b9916e02ed2cd5"), "lab" : "2", "porta" : "A0", "id_no" : 1, "datahora" : ISODate("2014-09-24T07:51:21Z"), "valor" : "395", "sensor" : "1" }
{ "_id" : ObjectId("5435be9ce7b9916e02ed2cd9"), "lab" : "2", "porta" : "A0", "id_no" : 1, "datahora" : ISODate("2014-09-24T07:51:23Z"), "valor" : "941", "sensor" : "1" }
{ "_id" : ObjectId("5435be9ce7b9916e02ed2cdd"), "lab" : "2", "porta" : "A0", "id_no" : 1, "datahora" : ISODate("2014-09-24T07:51:25Z"), "valor" : "208", "sensor" : "1" }
{ "_id" : ObjectId("5435be9ce7b9916e02ed2ce1"), "lab" : "2", "porta" : "A0", "id_no" : 1, "datahora" : ISODate("2014-09-24T07:51:27Z"), "valor" : "186", "sensor" : "1" }
{ "_id" : ObjectId("5435be9ce7b9916e02ed2ce5"), "lab" : "2", "porta" : "A0", "id_no" : 1, "datahora" : ISODate("2014-09-24T07:51:29Z"), "valor" : "848", "sensor" : "1" }
{ "_id" : ObjectId("5435be9ce7b9916e02ed2ce9"), "lab" : "2", "porta" : "A0", "id_no" : 1, "datahora" : ISODate("2014-09-24T07:51:31Z"), "valor" : "571", "sensor" : "1" }
{ "_id" : ObjectId("5435be9ce7b9916e02ed2ced"), "lab" : "2", "porta" : "A0", "id_no" : 1, "datahora" : ISODate("2014-09-24T07:51:33Z"), "valor" : "351", "sensor" : "1" }
{ "_id" : ObjectId("5435be9de7b9916e02ed2cf1"), "lab" : "2", "porta" : "A0", "id_no" : 1, "datahora" : ISODate("2014-09-24T07:51:35Z"), "valor" : "558", "sensor" : "1" }
{ "_id" : ObjectId("5435be9de7b9916e02ed2cf5"), "lab" : "2", "porta" : "A0", "id_no" : 1, "datahora" : ISODate("2014-09-24T07:51:37Z"), "valor" : "449", "sensor" : "1" }
{ "_id" : ObjectId("5435be9de7b9916e02ed2cf9"), "lab" : "2", "porta" : "A0", "id_no" : 1, "datahora" : ISODate("2014-09-24T07:51:39Z"), "valor" : "768", "sensor" : "1" }
{ "_id" : ObjectId("5435be9de7b9916e02ed2cfd"), "lab" : "2", "porta" : "A0", "id_no" : 1, "datahora" : ISODate("2014-09-24T07:51:41Z"), "valor" : "542", "sensor" : "1" }
{ "_id" : ObjectId("5435be9de7b9916e02ed2d01"), "lab" : "2", "porta" : "A0", "id_no" : 1, "datahora" : ISODate("2014-09-24T07:51:43Z"), "valor" : "763", "sensor" : "1" }
wenn ich drucken Sie die json-variable in python, ich sehe etwas wie:
{'id_no': 1, 'datahora': {'$gte': datetime.datetime(2014, 9, 24, 8, 21, 38, 527653), '$lt': datetime.datetime(2014, 9, 24, 8, 22, 36, 677022)}, 'porta': 'A1'}
Meine Mongndb Klasse Verbindung:
#!/usr/bin/python
from pymongo import MongoClient
class conexaoMongo:
def __init__(self):
self.conditions = []
self.client = MongoClient("127.0.0.1", 27017, safe=True)
self.db = self.client['inoshare']
self.ino = self.db.inoshare
def queryMongo(self, param1, param2=None, param3=None):
try:
if param2 != None:
results = self.ino.find(param1, param2)
elif param3 != None:
results = self.ino.find(param1, param2, param3)
else:
results = self.ino.find(param1)
#print "Total de registros ", results.count()
for post in results:
#print post
self.conditions.append(post)
return self.conditions
except:
print "Erro ao executar a query"
OK, viel deutlich dieser Zeit. erste Sache, die Sie nicht brauchen, um zu wiederholen
getestet jetzt, aber es hat nicht funktioniert.
und Ihre
Ich druckte den Inhalt der json-variable ist in der post.
Ich kann nur helfen, so weit. mit unseren Antworten (und den code), ich hoffe, Sie können korrigieren Sie die Fehler in Ihrem code. Es ist ganz offensichtlich, dass die Parameter nicht richtig übergeben. Mit einigen änderungen, die Sie sollten in der Lage sein, um die
results=results
, optimieren Sie den code und testen Sie einfach mit test = conexaoMongo();results = test.queryMongo({..., {'$gte':datetime(...), '$lt':datetime(...)}})
getestet jetzt, aber es hat nicht funktioniert.
und Ihre
json
Wörterbuch falsch ist, können Sie nicht auf self
außerhalb __init__
können Sie entweder self.json = {...}
und pass self.json
wie params.Ich druckte den Inhalt der json-variable ist in der post.
Ich kann nur helfen, so weit. mit unseren Antworten (und den code), ich hoffe, Sie können korrigieren Sie die Fehler in Ihrem code. Es ist ganz offensichtlich, dass die Parameter nicht richtig übergeben. Mit einigen änderungen, die Sie sollten in der Lage sein, um die
results
ich Euch gezeigt habe. Viel Glück!
InformationsquelleAutor touchmx | 2014-10-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
@Joni korrekt ist, müssen Sie
datetime
.klar kann ich erfolgreich Ergebnisse zurück.
Vielleicht werden Ihre Daten beschädigt ist, oder Sie posten soll dein code für uns zu überprüfen
ah ich sehe, Sie speichern das Datum mit
ISODate
Sie benötigen eine Konvertierung zwischen diesen, da in der Regel auf mongo
date
store alsDate
Objektich habe bearbeitet zu konvertieren, datetime, isoformat, können Sie testen und sehen, ob das funktioniert?
In meinem post hatte ich das schon getan. Keine Ergebnisse..
InformationsquelleAutor Anzel
Query-Bedingungen auf Isodatum Attribute verwenden sollten, Python
datetime.datetime
Objekte.Ist, nicht formatieren Ihre Daten, die als strings mit dem isoformat Funktion, die Sie verwenden, wie Sie sind.
Nicht immer alle Ergebnisse bedeutet, dass kein Dokument entspricht allen Bedingungen.
Wäre ein korrekter Gedanke, aber sehen Sie, ich werde fügen Sie in der post eine Liste von Datensätzen.
InformationsquelleAutor Joni