mongodb - 带有字符串_id和upsert的Mongoimport csv文件

标签 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"}

最佳答案

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

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/

相关文章:

mongodb - 使用 mongoimport 从 HDFS 导入数据到 MongoDB

mongodb - mongoimport 不适用于 mongodb 4.4,不在 bin 文件夹中

mongodb - 使用 mongoimport 导入日期数据类型

mongodb - Mongo从 CSV 中的独立纬度和经度列导入位置

node.js - 类型错误 : 'connect' only accepts a callback

java - spring data mongodb版本与spring的兼容性

mongodb - 减轻 Web 应用服务器负载的缓存策略

mongodb - 连接到主机时出错 : could not connect to server: server selection error: server selection timeout current topology: Type: Single Servers

mongodb - 元类委托(delegate)不是实例

javascript - Mongoose - 查询最新文档