2015-07-13 2 views
0

Я импортируемого некоторые Википедии документы в MongoDB с полем ИНТ типа «_ID» (они являются pageids для википедии страницы):получить MongoDB документы с междунар в _id

> db.wiki_page_id.find() 
{ "_id" : 10, "page_title" : "AccessibleComputing" } 
{ "_id" : 12, "page_title" : "Anarchism" } 

Я использую Mongoengine вместе с Django, и У меня возникли проблемы с возвратом документов, которые я импортировал. Когда я использую следующий код:

page_id_doc = WikiPageId.objects(id=10)[0] 

он сообщает об ошибке:

u'10' is not a valid ObjectId, it must be a 12-byte input of type 'str' or a 24-character hex string 

Когда я использую bson.objectid.ObjectId класс как это:

page_id_doc = WikiPageId.objects(id=ObjectId(10))[0] 

Он сообщает следующее сообщение об ошибке:

id must be an instance of (str, unicode, ObjectId), not <type 'int'> 

I Есть ли способ обойти это?

Спасибо!

ответ

1

С MongoEngine, вы можете определить поле в документе как «первичный ключ» (поле «_id» с помощью primary_key в keyword arguments на поле:

class MyClass(Document): 
    id = IntField(primary_key=True) 

Но, конечно, вы должны сделать убедитесь, что «тип» используется повсеместно в вашей коллекции, иначе проверка типа не будет выполнена для любого «_id», который не является int().

+0

Спасибо, это работает как шарм! – moonkey

 Смежные вопросы

  • Нет связанных вопросов^_^