【问题标题】:Can't upsert JSON with mongoimport无法使用 mongoimport 更新 JSON
【发布时间】:2012-07-27 05:08:44
【问题描述】:

我想使用 JSON 批量更新插入到 mongo 集合。

    $ mongoexport -d myDB -c myCollection
    connected to: 127.0.0.1
    { "_id" : "john", "age" : 27 }

但是使用我在 mongo shell 中的语法会产生:

    0$ echo '{_id:"john", {$set:{gender:"male"}}' | mongoimport --upsert --upsertFields _id -d myDB -c myCollection
    connected to: 127.0.0.1
    Fri Jul 27 15:01:32 Assertion: 10340:Failure parsing JSON string near: , {$set:{g
    0x581a52 0x528554 0xa9f2e3 0xaa1593 0xa980cd 0xa9c062 0x3e7ca1ec5d 0x4fe239
    ...
    /lib64/libc.so.6(__libc_start_main+0xfd) [0x3e7ca1ec5d]  mongoimport(__gxx_personality_v0+0x3c9) [0x4fe239]
    exception:Failure parsing JSON string near: , {$set:{g

    imported 0 objects
    encountered 1 error

当我尝试不使用大括号时,它不会产生错误但不会更改表格:

    0$ echo '{_id:"john", $set:{gender:"male"}}' | mongoimport --upsert --upsertFields _id -d myDB -c myCollection
    connected to: 127.0.0.1
    imported 1 objects
    0$ mongoexport -d myDB -c myCollection
    connected to: 127.0.0.1
    { "_id" : "john", "age" : 27 }
    exported 1 records

我到处搜索,但找不到使用 JSON 的示例。请帮忙!

【问题讨论】:

  • 数据从何而来?您最好用任何您想要的语言(php/python/perl/etc)编写脚本并直接从那里执行操作(使用语言驱动程序)。

标签: json mongodb upsert mongoimport


【解决方案1】:

据我所知,MongoImport 不评估命令。

【讨论】:

    【解决方案2】:

    只是为了补充安德烈的答案。

    Mongoimport 采用每行包含 1 个 JSON/CSV/TSV 字符串的单个文件并将其插入。您可以从标准输出导入,但不能像上面那样作为命令导入。您可以使用 mongoimport 按照 here 执行 upsert。

    您可以使用stoponError option 运行 mongoimport,这将在遇到错误时强制 mongoimport 停止。

    这是 mongoimport 的完整 manual,作为参考,mongoimport 不能可靠地保留所有丰富的 BSON 数据类型。

    【讨论】:

    • 我尝试基于该命令,但看不到如何使用 JSON 而不是 CSV?
    【解决方案3】:

    Mongoimport 不接受诸如 $set 之类的修饰符。您将需要使用 mongo --eval 命令进行更新。

    mongo myDB --eval 'db.myCollection.update({_id: "john"}, {$set:{gender:"male"}}, upsert=true)'
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2021-07-09
      • 1970-01-01
      • 1970-01-01
      • 2015-04-12
      • 1970-01-01
      • 2019-04-16
      • 2018-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多