以 int 作为 _id 检索 mongodb 个文档
Retrieve mongodb documents with int as _id
我将一些维基百科文档导入到 mongodb 中,其中包含 int 类型的“_id”字段(它们是维基百科页面的页面 ID):
> db.wiki_page_id.find()
{ "_id" : 10, "page_title" : "AccessibleComputing" }
{ "_id" : 12, "page_title" : "Anarchism" }
我将 Mongo 引擎与 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
class 时:
page_id_doc = WikiPageId.objects(id=ObjectId(10))[0]
报如下错误:
id must be an instance of (str, unicode, ObjectId), not
有什么办法解决这个问题吗?
谢谢!
使用 MongoEngine,您可以将文档中的字段定义为 "primary key"(“_id”字段,方法是在 keyword arguments 中使用 primary_key
字段:
class MyClass(Document):
id = IntField(primary_key=True)
但是当然你需要确保你的集合中的所有地方都使用了 "type" 否则对于任何不是 int()
.[=14= 的“_id”类型检查将失败]
我将一些维基百科文档导入到 mongodb 中,其中包含 int 类型的“_id”字段(它们是维基百科页面的页面 ID):
> db.wiki_page_id.find()
{ "_id" : 10, "page_title" : "AccessibleComputing" }
{ "_id" : 12, "page_title" : "Anarchism" }
我将 Mongo 引擎与 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
class 时:
page_id_doc = WikiPageId.objects(id=ObjectId(10))[0]
报如下错误:
id must be an instance of (str, unicode, ObjectId), not
有什么办法解决这个问题吗?
谢谢!
使用 MongoEngine,您可以将文档中的字段定义为 "primary key"(“_id”字段,方法是在 keyword arguments 中使用 primary_key
字段:
class MyClass(Document):
id = IntField(primary_key=True)
但是当然你需要确保你的集合中的所有地方都使用了 "type" 否则对于任何不是 int()
.[=14= 的“_id”类型检查将失败]