我正在尝试使用 mongoimport 在 _id 中使用字符串值插入数据。 由于 id 看起来像整数(即使它们在引号中),mongoimport 将它们视为整数并创建新记录而不是更新现有记录。
我正在运行的命令:
mongoimport --host localhost --db database --collection my_collection --type csv --file mydata.csv --headerline --upsert
mydata.csv 中的示例数据:
{ "_id": "0364", someField: "value"}
结果将是 mongo 插入这样的记录: { "_id": 364, someField: "value"}
而不是使用 _id "0364"< 更新记录
。
有谁知道如何让它将 _id
视为字符串?
不起作用的事情:
- 用双双引号""0364""、双引号和单引号"'0364'"或'"0364"'包围数据
- 将空字符串附加到值:
{ "_id": "0364"+ "", someField: "value"}
最佳答案
不幸的是,现在没有办法强制将类似数字的字符串解释为字符串:
https://jira.mongodb.org/browse/SERVER-3731
您可以使用 Python 或其他您熟悉的语言编写脚本,如下所示:
import csv, pymongo
connection = pymongo.Connection()
collection = connection.mydatabase.mycollection
reader = csv.DictReader(open('myfile.csv'))
for line in reader:
print '_id', line['_id']
upsert_fields = {
'_id': line['_id'],
'my_other_upsert_field': line['my_other_upsert_field']}
collection.update(upsert_fields, line, upsert=True, safe=True)
关于mongodb - 带有字符串_id和upsert的Mongoimport csv文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10302149/