db.getCollection("test").insert(
{
  name :"<c 语音》",
  bookprice:"33.2",
  adddate:"2017-10-l",
  allow:"true",
  baseinf:{
      ISBN:"l83838388",
      press: "清华大学出版社"
  },
  tags: ["good","book","it","program"]
});



一次插入多条:

db.getCollection("test").insert(
  [
      {item: "小学生教材", name :"《小学一年级语文(上册)》", price:12},
      {item: "小学生教材", name :"《小学二年级数学(上册)》", price:13},
      {item: "初中生教材", name :"《初中一年级物理(上册)》", price:14},
      {item: "初中生教材", name :"《初中二年级化学(上册)》", price:15}
  ]
);


(使用insert 命令一次性插入多条文档会比一条一条地插入省肘,这在大数据环境下是必须考虑的问题。多条文档一次性插入,利用了insert 的原子性事务特征,保证所有插入文档要么插入成功,要么不成功)

有序插入多条文档

db.getCollection("test").insert(
  [
      {_id:10, item: "小学生教材", name :"《小学一年级语文(下册)》", price:12},
      {_id:11, item: "小学生教材", name :"《小学二年级数学(下册)》", price:13},
      {_id:12, item: "初中生教材", name :"《初中一年级物理(下册)》", price:14},
      {_id:13, item: "初中生教材", name :"《初中二年级化学(下册)》", price:15}
  ],
  {ordered:  true}
);


(假设在test.test集合里已经有二id: l l "的一条文档记录。那么在执行上述命令时,命令执行将失败。也就是一条文档在ids相同的情况下不能重复插入。在ordered:true时,一条都不插入。在ordered:false时,除了出错记录外,其他记录继续插入。)

自定义写出错确认级别(含inse口命令出错返回对象显示)

db.getCollection("test").insert(
  {
      _id:1, item: "小学生教材", name :"《小学一年级语文(下册)》", price:12
  },
  {writeConcern: { w:"majority", wtimeout: 5000 }}
);


(5000 毫秒。假设在多服务器插入该条文档命令时,因网络拥堵原因,超过5 秒未完成命令操作。该命令将放弃执行,并返回一个出错对象内容)

简化插入命令
两个插入命令:
db.collection.insertOne() //一次性插入一条文档命令(该命令与insert 的区别,可以让程序员确保插入的是一条文档,而不能做多文档操作处理。)
db.collection. insertMany() //一次性插入多条文档命令(显然insertOne()和insertMany()是为程序员偷懒准备的,事实上,它们可以更好地减少程序插入文档的出错率,并提高编程效率,在实际软件项目中是鼓励使用的。)