我收到以下错误消息:
$ python tmp2.py
why??
Traceback (most recent call last):
File "tmp2.py", line 15, in <module>
test._id = ObjectId(i[0])
File "/home/mictadlo/.virtualenvs/unisnp/lib/python2.7/site-packages/bson/objectid.py", line 92, in __init__
self.__validate(oid)
File "/home/mictadlo/.virtualenvs/unisnp/lib/python2.7/site-packages/bson/objectid.py", line 199, in __validate
raise InvalidId("%s is not a valid ObjectId" % oid)
bson.errors.InvalidId: test1 is not a valid ObjectId
使用此代码:
^{pr2}$怎么可能使用自己的ID也是唯一的?在
根据文档:http://docs.mongoengine.org/apireference.html#fields,objectfield是“MongoDB objectid的字段包装器”。因此它不能接受字符串
test1
作为对象id您可能需要将代码更改为如下所示:
使您的代码正常工作(假设
test1
等是有效的id)两件事:
ObjectId
接收24个十六进制字符串,不能用该字符串初始化它。例如,不使用'test1'
,您可以使用一个字符串,例如'53f6b9bac96be76a920e0799'
或{ObjectId
,可以这样做:我不知道你想用
^{pr2}$_id
来完成什么。如果您试图为您的文档生成和id字段或“主键”,则不必这样做,因为它是自动生成的。你的代码应该是:如果您坚持使用名为
_id
的字段,您必须知道您的id
将是相同的,因为在内部,MongoDB调用它_id
。如果仍要使用string1
作为标识符,则应执行以下操作:相关问题 更多 >
编程相关推荐