MongoDB基本增删改查操作命令

 

                            MongoDB基本增删改查操作

使用java操作MongoDB篇:https://blog.csdn.net/qq_28524127/article/details/90137421

学习裙:244284555,暗号:MongoDB

 

1选择或创建数据库

使用use 数据库名称即可选择数据库,如果该数据库不存在会自动创建

2插入文档

文档相当于关系数据库中的记录

首先我们定义一个文档变量,格式为变量名称={}; 例如:

接下来就是将这个变量存入MongoDB

格式为:

db.集合名称.save(变量);

这里的集合就相当于关系数据库中的表。例如:

这样就在student集合中存入文档。如果这个student集合不存在,就会自动创建。

当然,你也可以不用定义变量,直接把变量值放入save方法中也是可以地。

为了方便后期测试,我们再多加点数据

db.student.save({name:"沙和尚",sex:"男",age:25,address:"流沙河路11号"});

db.student.save({name:"唐僧",sex:"男",age:35,address:"东土大唐"});

db.student.save({name:"白骨精",sex:"女",age:18,address:"白骨洞"});

db.student.save({name:"白龙马",sex:"男",age:20,address:"西海"});

db.student.save({name:"哪吒",sex:"男",age:15,address:"莲花湾小区"});

3查询集合

我们要查询某集合的所有文档,使用find()方法。语法格式为:

db.集合名称.find();

例如,我们要查询student集合中的所有文档:

这里你会发现每条文档会有一个叫_id的字段,这个相当于我们原来关系数据库中表的主键,当你在插入文档记录时没有指定该字段,MongDB会自动创建,其类型是ObjectID类型。

如果我们在插入文档记录时指定该字段也可以,其类型可以使ObjectID类型,也可以是MongoDB支持的任意类型. 例如:

我们再次查询

如果我想按一定条件来查询,比如我想查询性别为“女”的记录,怎么办?很简单!

只要在find()中添加参数即可,参数也是json格式,如下:

为了避免游标可能带来的开销,MongoDB还提供了一个叫findOne()的方法,用来返回结果集的第一条记录。

性别为男的有很多条,这里只返回了第一条记录。

当我们需要返回查询结果的前几条记录时,可以使用limit方法,例如:

4修改文档

我们要想修改记录,可以使用update方法 .

例如:我向将姓名为孙悟空的学员文档中的age字段值改为31,执行下列语句,看会发生什么?

再次查询:

哦,悲剧了~~ 原来的孙悟空的文档只剩下_id 和age两个字段了。

那如何保留其它字段值呢?

我们需要使用MongoDB提供的修改器$set 来实现,请看下列代码。

再次查询,会发现“猪八戒”文档中原有的其它字段还保留下来,而更新age字段也成功了。

5删除文档

删除文档使用remove()方法,格式为:

db.集合名称.remove( 条件 );

请慎用remove({}), 它会一条不剩地把你的集合所有文档删的干干净净。

我们现在演示一下,删除name为“哪吒”的记录:

再次查询,会发现哪吒的文档不见了。

4.高级查询

4.1模糊查询

MongoDB的模糊查询是通过正则表达式的方式实现的。格式为:

  /模糊查询字符串/

例如,我要查询student集合中address字段中含有“洞”的所有文档,代码如下:

 

如果要查询name字段中以“白”开头的,代码如下:

4.2 Null值处理

如果我们想找出集合中某字段值为空的文档,如何查询呢?其实和我们之前的条件查询是一样的,条件值写为null就可以了。

我们现在集合中的文档都是没有空值的,为了方便测试,现在我们将数据做些修改:

将“唐僧”的address改为空

再次查询:

我们会发现不仅会显示“唐僧”这条文档,之前因为修改导致address字段丢失的那条记录也出现了。也就是说,这种查询会查询出该字段为null的以及不存在该字段的文档记录。

4.3大于小于

<, <=, >, >= 这个操作符也是很常用的,格式如下

db.collection.find({ "field" : { $gt: value } } ); // 大于: field > value

db.collection.find({ "field" : { $lt: value } } ); // 小于: field < value

db.collection.find({ "field" : { $gte: value } } ); // 大于等于: field >= value

db.collection.find({ "field" : { $lte: value } } ); // 小于等于: field <= value

 

示例:查询年龄大于等于20岁的学员记录

4.4不等于

不等于使用$ne操作符。

示例:查询sex字段不为“男”的文档

4.5判断字段是否存在

判断字段是否存在使用$exists操作符。

示例:查询所有含有address字符的文档。

示例:查询所有不含有address字符的文档。

4.6包含与不包含

包含使用$in操作符。

示例:查询student集合中age字段包含20,25,30的文档

示例:查询student集合中age字段不包含20,25,30的文档

 

4.7统计记录条数

统计记录条件使用count()方法。

示例:查询student集合的文档条数。

示例:查询student集合中age字段小于等于20的文档条数。

4.8 条件连接--并且

我们如果需要查询同时满足两个以上条件,需要使用$and操作符将条件进行关联。(相当于SQL的and)

格式为:$and:[ {  },{  },{   } ]

示例:查询student集合中age大于等于20 并且age小于30的文档

4.9 条件连接--或者

如果两个以上条件之间是或者的关系,我们使用$or操作符进行关联,与前面$and的使用方式相同

格式为:$or:[ {  },{  },{   } ]

示例:查询student集合中sex为女,或者年龄小于20的文档记录

 

 

 

展开阅读全文

没有更多推荐了,返回首页