Mongodb 将pymongo配置为使用字符串_id而不是ObjectId
我正在使用Mongodb 将pymongo配置为使用字符串_id而不是ObjectId,mongodb,meteor,pymongo,Mongodb,Meteor,Pymongo,我正在使用pymongo从不同的系统中为数据库添加旧信息,我有很多这样的查询: studentId = studentsRemote.insert({'price': price}) 在实际的python脚本中,studentId作为字符串打印,但在我使用此数据的javascript Meteor应用程序中,它显示为ObjectId(…) 我想将pymongo配置为将\u id生成为字符串,而不必使用ObjectId 我用Meteor规范创建的任何对象都将使用字符串格式,而不是ObjectId
pymongo
从不同的系统中为数据库添加旧信息,我有很多这样的查询:
studentId = studentsRemote.insert({'price': price})
在实际的python脚本中,studentId
作为字符串打印,但在我使用此数据的javascript Meteor应用程序中,它显示为ObjectId(…)
我想将pymongo
配置为将\u id
生成为字符串,而不必使用ObjectId
我用Meteor规范创建的任何对象都将使用字符串格式,而不是ObjectId格式。我不想在我的应用程序中混合使用id类型,因为这会让我头疼互操作性问题
我知道我可以,但坦率地说,我宁愿使用字符串格式。这是流星默认值,它更简单,更简单
或者类似的东西可以解析
\u id
,并在文档进入数据库后用于更新文档,但最好有更直接的东西。结果相当简单
可以使用将传入文档更改为其他表单。大多数情况下,但这也起到了作用
操纵器就位后,只需进行转换即可
来自pymongo.son\u操纵器导入操作器
类ObjectdManipulator(SONManipulator):
def转换_传入(自身、子、集合):
子[u''u id']=str(子[u''u id'])
归子
db.add_-son_操纵器(ObjectdManipulator())
在.py文件中:
from bson.objectid import ObjectId
......
kvdict['_id'] = str(ObjectId())
......
mongoCollection.insert(kvdict)
没关系 现在似乎不推荐使用add_-son_操纵器()。我找不到合适的替代品。有人有什么想法吗?无论如何,它在Python2.7.10中似乎不起作用。我在transform_incoming()方法中添加了一个断点和一个print语句,代码永远不会到达那个点。。。将_id添加到dict中,强制mongo使用该_id,而不是默认的ObjectId()