Как искать документ по oid в mongoengine - PullRequest
7 голосов
/ 03 апреля 2012

Мне нужно получить документы из БД по oid, например:

Docs.objects(_id='4f4381f4e779897a2c000009')

Но как это сделать, если _id требует объект ObjectId и даже если я пытаюсь установить ObjectId из pymongo, это не работает.

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

вернуть пустой список

Ответы [ 3 ]

24 голосов
/ 03 апреля 2012

Это должно работать:

Docs.objects(pk='4f4381f4e779897a2c000009')
17 голосов
/ 16 мая 2012

Как насчет использования необработанной строки:

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

Это, вероятно, самый простой способ ... верно?

8 голосов
/ 09 декабря 2012

Пришел к этому вопросу, потому что у меня было много проблем с этим сам.Похоже, что PyMongo изменил это , и objectid больше не находится внутри pymongo и теперь вместо этого:

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

Кроме того, Mongoengine использует имя 'id' для поля ObjectID.

...