【问题标题】:How to change auto generated _id field in mongodb while importing data from csv?从csv导入数据时如何更改mongodb中自动生成的_id字段?
【发布时间】:2015-02-26 05:55:23
【问题描述】:

我正在使用mongoimportcsv 文件中导入数据。为此,我执行以下命令

mongoimport -d {databaseName} -c {collectionName}--type csv --file {fileName}  --headerline

它使用 objectId 值创建自动生成 _id 字段。并在其上创建索引。 但我希望它不应该在此创建索引。如何在 _id 和该 csv 文件的字段上创建复合索引?

【问题讨论】:

  • 你为什么要那个?
  • 因为我不希望默认 id 是索引。
  • 你真的想创建一个复合_id,还是只是使用不同的字段作为主键?如果您的 csv 文件中有更自然的键,您可以将 csv 标头中的字段名称更改为 _id
  • @Stennie 我想用默认的_id和csv文件的字段之一制作复合索引。
  • 如果你想这样做,你必须用你喜欢的语言编写一个自定义导入脚本。我不知道任何具有受支持的 MongoDB 驱动程序但也没有 CSV 解析模块的语言。但是,为什么要同时使用 _id 和 CSV 文件中的字段? CSV 中的字段不是唯一的吗?导入 CSV 后,您最好确保字段上有一个额外的索引。

标签: mongodb csv mongodb-query database


【解决方案1】:

引用 MongoDB documentation

MongoDB 在创建集合时为所有集合创建 _id 索引,它是 _id 字段上的升序唯一索引。您不能删除 _id 字段上的索引。

但是,您可以创建复合索引,其中您的索引可以包含对 _id 字段的引用。

语法为db.test.ensureIndex({"_id": 1, "name": 1}),例如name 是文档中的另一个字段。 More info

【讨论】:

  • 我们也可以删除集合上的自动生成索引吗?
  • @dasamit7 不,你不能
猜你喜欢
  • 1970-01-01
  • 2013-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-27
  • 1970-01-01
相关资源
最近更新 更多