Wie

2012-04-03 9 views
5

Dokument von oid in mongoengine suchen muss ich durch oid Dokumente von db erhalten, wie:Wie

Docs.objects(_id='4f4381f4e779897a2c000009') 

Aber wie es tun, wenn _id erfordert ObjectId Objekt und sogar versuchen, ich ObjectId von pymongo es einrichten funktioniert nicht.

Docs.objects(_id=pymongo.objectid.ObjectId('4f4381f4e779897a2c000009')) 

Rückkehr leere Liste

Antwort

15

Wie wäre es nur die rohe Zeichenfolge mit:

Docs.objects.get(id='4f4381f4e779897a2c000009') 

Das wahrscheinlich der einfachste Weg ist ... Recht ?

+0

Funktioniert jedoch nicht für Primärschlüssel. Oder bin ich der Einzige? –

+0

http://docs.mongoengine.org/apireference.html#mongoengine.queryset.QuerySet.get – Wtower

20

Dies sollte funktionieren:

Docs.objects(pk='4f4381f4e779897a2c000009') 
+0

Ja, das stimmt zu, thx. – Denis

+0

Diese eine Rückkehrliste. Kein einziges Objekt. – Raptor

7

Kam zu dieser Frage, weil ich selbst viel Ärger hatte. Es scheint, wie PyMongo changed this und objectid ist nicht mehr innerhalb pymongo und ist jetzt statt:

import bson 
Doc.objects.get(id=bson.objectid.ObjectId('4f4381f4e779897a2c000009')) 

Auch Mongoengine den Namen ‚id‘ für das ObjectID-Feld verwendet.

+1

danke für die Freigabe, es funktioniert. –