【问题标题】:import mongodb database to mongolab将 mongodb 数据库导入 mongolab
【发布时间】:2016-04-16 20:06:39
【问题描述】:

我已从本地数据库导出 mongoDB,它采用以下格式并保存为 CSV 文件。

_id,accomodation,state,user
ObjectId(565dae266dbda6964f061d99),No,California,ObjectId(5651fb48b0dfa73c134df161)

然后我尝试使用以下命令运行 mongoimport

 mongoimport -h hostname -d dbname -c collectionname -u username
 -p password --file filename.csv --type csv --headerline

导入成功,但 Mongolab 在我阅读时以严格模式存储 DB,因此它们存储

ObjectId(565dae266dbda6964f061d99)  in this format 
"_id": {
        "$oid": "565dae266dbda6964f061d99"
    }

但我导入的数据只是存储为 ObjectId(565dae266dbda6964f061d99)...我想知道如何导入以安全模式保存的所有 ObjectID 数据存储在“$oid”中:“565dae266dbda6964f061d99”格式我的 mongolabDb。

如果您有任何问题,请告诉我..

谢谢。

【问题讨论】:

  • 快速澄清:MongoLab 不以严格的 JSON 格式存储数据,所有 MongoDB 数据仍以 BSON 格式存储。然而,Web UI 中的文档编辑器是 JSON 编辑器,因此必须使用严格的 MongoDB 扩展 JSON 以 JSON 格式查看和编辑 ObjectId。您会注意到,如果您通过 mongo 管理 shell 连接到 MongoLab 数据库并查询数据,这些 _id 值将显示为 ObjectId(因为 shell 是 JavaScript 解释器并且不强制执行严格的 JSON)。

标签: mongodb mlab


【解决方案1】:

正如您在问题中正确指出的那样,MongoLab 使用 Strict MongoDB Extended JSON,因此对象 ID 表示如下:

{ "$oid": "<id>" }

无法在托管服务上更改此设置。

【讨论】:

  • 我不确定,但在此数据上本地查询工作 { "_id": "ObjectId(565dae266dbda6964f061d9a)", "accomodation": "No", "user": "ObjectId(5651fb48b0dfa73c134df161)"但是一旦我们在 mongolab 上使用相同的查询,一旦我用 $oid 更改 ObjectId,它就会开始工作......
  • 您使用的是控制台还是 ORM?
  • 啊,好吧,在控制台中你必须使用(如你所见)$oid——尽管大多数 ORM 会自动为你处理这个
  • 在我的集合中,我有一个字段“user”:“ObjectId(5651fb48b0dfa73c134df161)”我只是更改了 userID,现在数据也通过 ObjectId 传递......我不知道为什么用户密钥名称冲突.....无论如何谢谢:)
  • @sonukumar 没问题,很高兴我能帮上忙
猜你喜欢
  • 2017-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-28
  • 2021-01-06
  • 1970-01-01
  • 2013-05-15
  • 2018-09-20
相关资源
最近更新 更多