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()是为程序员偷懒准备的,事实上,它们可以更好地减少程序插入文档的出错率,并提高编程效率,在实际软件项目中是鼓励使用的。)