2015-07-13 32 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有没有办法解决这个问题?

谢谢!

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

但是,当然,你需要做:

回答

1

随着MongoEngine,您可以通过在keyword arguments使用primary_key到外地文档中定义一个字段作为“主键”(“_id”字段确保“类型”在您的收藏中随处可见,否则类型检查将失败,因为任何“_id”不是int()

+0

谢谢!它的作用就像一个魅力! – moonkey