Mongoimport csv文件,包含字符串_id和upsert

Paw*_*ski 5 mongodb mongoimport

我正在尝试使用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" }

A. *_*vis 2

不幸的是,现在没有办法强制将类似数字的字符串解释为字符串:

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)
Run Code Online (Sandbox Code Playgroud)