MongoDB学习笔记(⼗⼀)——添加⽂档
本篇博⽂开始讲解MongoDB的操作内容。
⾸先先讲⼀下MongoDB的添加⽂档操作,在本篇博⽂中,将会从shell、js脚本、MongoDB Compass、java原⽣驱动、spring封装⼏个⽅⾯来讲解如何插⼊MongoDB⽂档
MongoDB shell
从前⾯的⽅法汇总的集合⽅法中,我们可以看到shell提供了三个插⼊⽅法:
其语法为:
<document or array of documents>,
{
writeConcern: <document>,
ordered: <boolean>
}
)
其语法为:
<document>,
{
writeConcern: <document>
}
)
其语法为:
[ <document 1> , <document 2>, ... ],
{
writeConcern: <document>,
ordered: <boolean>
}
)
上⾯的⽅法主要有三个参数:
document – 该参数指要插⼊的⼀个或多个⽂档的数据,如果是⼀个⽂档,则该参数为⼀个json数据,若是多个⽂档,则该参数是多个json数据组成的数组。
writeConcern – 可选参数,该参数指的是该次的插⼊操作的写⼊关注程度,其值为⼀个⽂档,表现为json数据。⼤家可以参考前⾯的写⼊关注的讲解。
ordered – 2.6版本以后的新参数,可选参数。如果值为true,则将数组中⽂档的进⾏有序插⼊,如果⼀个⽂档发⽣错误,mongodb将返回,⽽⽆需处理数组中的剩余⽂档。如果false,执⾏⽆序插⼊,如果错误发⽣在某个⽂档中,则继续处理数组中的剩余⽂档。默认为true。
注:
1.上⾯的三个⽅法是集合(collection)的⽅法,所以我们需要有对应的集合,当然如果我们执⾏⽅法时,指定的集合并不存在,MongoDB会⾃动创建该集合,并插⼊数据。
2.如果⽂档没有指定”_id”字段,那么mongodb将在插⼊之前为⽂档分配⼀个惟⼀的objectid,并将该objectId作为”_id”字段插⼊⽂档中。如果⽂档包含”_id”字段,则_id值必须是集合中唯⼀的,以避免重复的密钥错误。
⽐如下图所⽰,我⽤⼏个insert⽅法演⽰插⼊数据。由于insertOne()和insertMany()和该⽅法差不多,就不在演⽰了:
上图中从只插⼊⼀条数据、插⼊⼀条数据+写⼊关注、插⼊多条数据+写⼊关注+是否排序等⼏个⽅⾯演⽰。
其中上⾯的mongoTest集合原先并不存在,我们可以直接调⽤db.mongoTest.insert(...)来默认创建并插⼊数据。
在shell中我们使⽤insert()⽅法插⼊⽂档后,不关错误 还是失败,都会返回⼀个BulkWriteResult()对象,内部描述了插⼊操作的结果。
从上⾯的插⼊的数据可以看出,在同⼀个集合中插⼊数据,我们不必遵循每个⽂档必须具有相同的字
段名,且就算相同的字段名在不同的⽂档中其值可以为不同类型。在这点上MongoDB⽐关系型数据库更加灵活。当然建议⼤家还是将同⼀类型的⽂档放在⼀个集合中,不同类型的⽂档放在不同的集合中。
js脚本
我们除了可以在shell中插⼊数据,我们还可以在⼀个js脚本⽂件中插⼊数据。我们可以⾸先新建⼀个脚本⽂件,然后在⽂件中使⽤JavaScript语法和shell提供的⽅法,来执⾏js脚本来实现操作数据库。
⽐如下⾯的语句:
上⾯的代码就是js中插⼊的数据的代码,从上⾯的代码,我们可以看到在js⽂件中我们既可以使⽤JavaScript语法⼜可以使⽤shell⽅法。相⽐较在shell中操作数据库相⽐,js脚本来操作数据库能够更加灵活,其易修改、易保存记录、可以定时执⾏等等优点。执⾏js脚本只需要在中切换到mongoDB的安装⽬录的bin⽬录下,直接执⾏mongo js 脚本路径
即可,如下图:
//获取数据库链接
var  db = connect("localhost/words","yfl","yfl");
//⾃定义⽂档
var  document1 = {key:"mongo_js",value :"测试js 脚本插⼊数据"};
//调⽤集合mongoTest 的insert ⽅法
var  document2 = {key:"mongo_js2",value :"测试js 脚本插⼊数据,附带参数"};
//⾃定义带有写⼊关注和是否顺序插⼊参数
var  options = {writeConcern: { w: "majority", wtimeout: 5000 },ordered: false  }
//带参数插⼊数据
//⾃定义多个⽂档
var  document3 = {key:"mongo_js3",value :"测试js 脚本批量插⼊数据"};
var  document4 = {key:"mongo_js4",value :"测试js 脚本批量插⼊数据"};
/
/⾃定义⼀个⽂档数组,⽤于存放⽂档
var  documentArray = new  Array();
//调⽤数组的push ⽅法将⽂档添加进数组
documentArray.push(document3);
documentArray.push(document4);
js获取json的key和value//将数组传⼊insert ⽅法实现批量插⼊
//获取集合对象
var  mongoTest = db.getCollection("mongoTest");
//查询“key”这个键的值在"mongo_js","mongo_js4","mongo_js2","mongo_js3"之中的记录
var  cursor = mongoTest.find({key:{$in :["mongo_js","mongo_js4","mongo_js2","mongo_js3"]}});
/
/打印出查询的数据
Array());
上⾯插⼊结果我们可以使⽤MongoDB Compass查看,如下图:
MongoDB Compass
上⾯的练习我们使⽤了shell插⼊了5条数据,这时候我们可以使⽤MongoDB Compass来查看先前的数据,如图:
我们可以可以看到上⾯操作插⼊的数据在这⾥都能看到。
下⾯我们开始演⽰如何在MongoDB Compass中插⼊数据:
⾸先我们点击左上⾯的绿⾊的“INSERT DOCUMENT”按钮,如图:
然后输⼊我们要插⼊的数据,如图:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。