type BookExt struct {ID       bson.ObjectId `bson:"_id"`Title    string        `bson:"title"`SubTitle string        `bson:"subTitle"`Author   string        `bson:"author"`
}

以上结构体,在通过此结构体对象作为参数传入Insert插入文档时,必须通过bson.NewObjectId创建ID,如下代码所示:

aBook := BookExt{ID:bson.NewObjectId(),Title:    "Go",SubTitle: "Go",Author:   "GoBj",
}
c.Insert(&aBook)

如果不想自己调用bson.NewObjectId,想让mongodb自动生成ID怎么办呢?有两种办法

1.使用bson.M构建

在使用mongodb插入文档传参的时候,可以用bson.M构建参数传入Insert

c.Insert(bson.M{"title":    "Go","subTitle": "Go","author":   "GoBj",
})

2.在结构体中,使用tag标签

type BookExt struct {ID       bson.ObjectId `bson:"_id,omitempty"` Title    string        `bson:"title"`SubTitle string        `bson:"subTitle"`Author   string        `bson:"author"`
}

使用以上 `bson:"_id,omitempty"`标签,意思是当传入的_id是空时,将忽略该字段,所以当插入到mongodb时,发现此字段为空,mongodb将自动生成_id

还有一种标签方式也可以,如下:

type BookExt struct {ID       bson.ObjectId `bson:"-"`Title    string        `bson:"title"`SubTitle string        `bson:"subTitle"`Author   string        `bson:"author"`
}

`bson:"-"`表示完全忽略此字段,但是也带来个问题,就是从mongodb查询时,使用此结构体作为返回参数,也会忽略此字段,结果中没有读出_id所以推荐第一种标签方式.

转载于:https://www.cnblogs.com/zengyg/p/11008646.html

mongodb插入文档时不传ObjectId相关推荐

  1. MongoDB插入文档

    db.collection.insertOne() 插入单个文档. db.collection.insertMany() 插入多个文档. db.collection.insert() 插入单/多个文档 ...

  2. MongoDB 插入文档

    文档的数据结构和JSON基本一样. 所有存储在集合中的数据都是BSON格式. BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON. 插入文档 MongoDB 使用 inse ...

  3. Mongoose在向集合中插入文档时的集合命名问题

    原文链接:http://www.cnblogs.com/wx1993/p/5243245.html Mongoose使用结构化的模式应用到MongoDB集合,为MongoDB Node.js原生驱动程 ...

  4. 2个字段并在一次插入一个字段里面_elasticsearch外用与内观(二)-当插入文档时,elasticsearch都在做什么...

    Previous: elasticsearch外用与内观(一)-常用功能与使用方法 在了解了es的基本用法之后,我们再来看看当插入文档数据时,elasticsearch都在做什么. 首先,es的索引只 ...

  5. MongoDB学习文档

    MongoDB 一.MongoDB特点 1.MongoDB优点 2.MongoDB缺点 二.MongoDB数据结构 三. 数据库 四.集合 五.文档 六.搭建复制集 一.MongoDB特点 1.Mon ...

  6. 开启MongoDB更新文档操作的正确姿势

    将文档存入数据库中之后,可以使用以下几种更新方法之一对其进行更改:updateOne.updateMany 和 replaceOne.updateOne 和 updateMany 都将筛选文档作为第一 ...

  7. mongodb查询文档

    mongodb查询文档 语法:db.集合名.find({条件}) 操作符使用频率最高的: 大于: $gt > 大于等于: $gte >= 小于: l t < 小 于 等 于 : lt ...

  8. ES 插入文档报错:Rejecting mapping update to [testindex] as the final mapping would have more than 1 type

      笔者在用 curl 命令行对 ElasticSearch 进行文档插入时,报了如下错误. [estestuser@vm-10-201-42-9 ~]$ curl -u elastic -H &qu ...

  9. 合并word文档时,用Jacob 插入分节符以达到保持原来的页眉的一个可行方案

    修改原因:鄙视下csdn的博客贴图功能,不太好用,还丢图.文中图片突然显示不出来了,现在重新上传相关图片. 问题描述: 在用jacob进行合并多份word文档成一份时,为了让两份文档都能保持住自己原本 ...

最新文章

  1. 利用pandas读写HDF5文件
  2. python_day9 进程池
  3. Fork/Join框架
  4. CM: How is attachment version implemented
  5. couchbase集群_使用CLI扩展和重新平衡Couchbase集群
  6. java开发事故如何处理_记一次缓存事故
  7. html右侧分为两个框架,html – 两个框架一个滚动条
  8. VBS编程基础教程 (第5篇)
  9. delphi 第三方组件 log4cpp.dll
  10. mfc ribbon动态修改字符_如何動態更改CMFCRibbonLabel的文本
  11. oracle 锁表查询及解决、表字段查询
  12. wincc7.5官网下载及安装配置(适配window10超详细教程)
  13. 离散数学集合论与数理逻辑基本概念
  14. 服务器常见问题,如何解决“远程服务器返回错误”?
  15. 阿里iconfont矢量图库使用
  16. iOS 中使用 webSocket
  17. Invalid parameter passed to C runtime function.
  18. QGIS空间数据分析——空间数据基本处理与计算
  19. 爬虫有道词典,高精度加密版
  20. 对比两张excel的不同

热门文章

  1. 人工智能时代,教育如何做人工智能的“弄潮儿”?
  2. ijkplayer iOS集成
  3. java IO流文件的读写具体实例
  4. Jenkins使用Publish Over FTP Plugin插件上传FTP详解
  5. 超大磁盘分区工具parted使用介绍(一)
  6. ib_logfile 在数据库中有何作用?
  7. Swift 中使用 SQLite——修改和删除数据
  8. Dubbo2.6.5+Nacos注册中心(代替Zookeeper)
  9. 用Redis存储Tomcat集群的Session(转载)
  10. Npm 5 package locks