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 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

Schreibe einen Kommentar