Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 将pymongo配置为使用字符串_id而不是ObjectId_Mongodb_Meteor_Pymongo - Fatal编程技术网

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()