MongoDB基本操作总结

Posted ly570

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB基本操作总结相关的知识,希望对你有一定的参考价值。

MongoDB语法总结:
插入操作:
单条插入
语法 : insertOne()
示例:

db.getCollection(‘MY_TEST‘).insertOne("日期" : "20190915", "作者": "xmr", "目标" :"整理mongo语法")
1
结果:

/* 1 */

"acknowledged" : true,
"insertedId" : ObjectId("5cdbdad464173957bc9e392a")

1
2
3
4
5
结果验证:

# 全表查询
db.getCollection(‘MY_TEST‘).find()


"_id" : ObjectId("5cdbdad464173957bc9e392a"),
"日期" : "20190915",
"作者" : "xmr",
"目标" : "整理mongo语法"

1
2
3
4
5
6
7
8
9
批量插入 :
语法 : insertMany()
插入数据集 :

["姓名:" : "xmr", "性别" : "男", "住址" : "地球", "年龄" :"23", "收入" : "354", "爱好": "女", "职业" : "码畜",
"姓名:" : "xmr", "性别" : "男", "住址" : "地球", "年龄" :"23", "收入" : "354", "爱好": "女", "职业" : "码畜",
"姓名:" : "xmr", "性别" : "男", "住址" : "地球", "年龄" :"35", "收入" : "233", "爱好": "女", "职业" : "码畜", "学历" : "本科",
"姓名:" : "zyd", "性别" : "女", "住址" : "火星", "年龄" :"22", "收入" : "88888", "爱好":"吃", "职业" : "学生", "学历" : "硕士",
"姓名:" : "张子枫", "性别" : "女", "代表作品" : "你好,之华, 唐山大地震", "综艺" : "向往的生活第三季", "优势" : "美",
"动漫名" : "火影忍者", "女主": "日向雏田", "年龄": "24"
]`
1
2
3
4
5
6
7
实例:

db.getCollection(‘MY_TEST‘).insertMany(["姓名:" : "xmr", "性别" : "男", "住址" : "地球", "年龄" :"23", "收入" : "354", "爱好": "女", "职业" : "码畜",
"姓名:" : "xmr", "性别" : "男", "住址" : "地球", "年龄" :"23", "收入" : "354", "爱好": "女", "职业" : "码畜",
"姓名:" : "xmr", "性别" : "男", "住址" : "地球", "年龄" :"35", "收入" : "233", "爱好": "女", "职业" : "码畜", "学历" : "本科",
"姓名:" : "zyd", "性别" : "女", "住址" : "火星", "年龄" :"22", "收入" : "88888", "爱好":"吃", "职业" : "学生", "学历" : "硕士",
"姓名:" : "张子枫", "性别" : "女", "代表作品" : "你好,之华, 唐山大地震", "综艺" : "向往的生活第三季", "优势" : "美",
"动漫名" : "火影忍者", "女主": "日向雏田", "年龄": "24"
])
1
2
3
4
5
6
7
运行结果 :

/* 1 */

"acknowledged" : true,
"insertedIds" : [
ObjectId("5cdbde9564173957bc9e392c"),
ObjectId("5cdbde9564173957bc9e392d"),
ObjectId("5cdbde9564173957bc9e392e"),
ObjectId("5cdbde9564173957bc9e392f"),
ObjectId("5cdbde9564173957bc9e3930"),
ObjectId("5cdbde9564173957bc9e3931")
]

1
2
3
4
5
6
7
8
9
10
11
12
注:_id读作Object id, 由时间,机器码,进程pid和自增计数器构成

之后的查询和删除都以刚刚添加的几条数据为基础进行操作

查询操作
全表扫描:
语法 : find()
实例:

db.getCollection(‘MY_TEST‘).find()
1
查询固定值数据 :
语法 : find(“字段值1”:“值1”, “字段值2”:“值2”)
实例1: 扫描表里面姓名是张子枫的数据

db.getCollection(‘MY_TEST‘).find("姓名:" : "张子枫")
1
结果1:

/* 1 */

"_id" : ObjectId("5cdbde9564173957bc9e3930"),
"姓名:" : "张子枫",
"性别" : "女",
"代表作品" : "你好,之华, 唐山大地震",
"综艺" : "向往的生活第三季",
"优势" : "美"

1
2
3
4
5
6
7
8
9
实例2 : 扫描表里面姓名是xmr, 学历为本科的数据

db.getCollection(‘MY_TEST‘).find("姓名:" : "xmr", "学历" : "本科")
1
结果2:

/* 1 */

"_id" : ObjectId("5cdbde9564173957bc9e392e"),
"姓名:" : "xmr",
"性别" : "男",
"住址" : "地球",
"年龄" : "35",
"收入" : "233",
"爱好" : "女",
"职业" : "码畜",
"学历" : "本科"

1
2
3
4
5
6
7
8
9
10
11
12
范围查询 :
操作符介绍 :

$gt 大于
$gte 大于等于
$lt 小于
$lte 小于等于
$ne 不等于
1
2
3
4
5
实例1 : 查询表里面年龄大于等于35岁的数据

db.getCollection(‘MY_TEST‘).find("年龄" : "$gte" : "35")
1
结果1:

/* 1 */

"_id" : ObjectId("5cdbde9564173957bc9e392e"),
"姓名:" : "xmr",
"性别" : "男",
"住址" : "地球",
"年龄" : "35",
"收入" : "233",
"爱好" : "女",
"职业" : "码畜",
"学历" : "本科"

1
2
3
4
5
6
7
8
9
10
11
12
实例2: 查询表里面年龄大于23且年龄小于等于35的结果.

db.getCollection(‘MY_TEST‘).find("年龄" : "$gt" : "23", "$lte" : "35")
1
结果2:

/* 1 */

"_id" : ObjectId("5cdbde9564173957bc9e3931"),
"动漫名" : "火影忍者",
"女主" : "日向雏田",
"年龄" : "24"

/* 2 */

"_id" : ObjectId("5cdbde9564173957bc9e392e"),
"姓名:" : "xmr",
"性别" : "男",
"住址" : "地球",
"年龄" : "35",
"收入" : "233",
"爱好" : "女",
"职业" : "码畜",
"学历" : "本科"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
在上面的基础上继续添加条件 : (满足实例2并且动漫名为火影忍者的结果)
1
db.getCollection(‘MY_TEST‘).find("年龄" : "$gt" : "23", "$lte" : "35", "动漫名" : "火影忍者")
1
结果:

/* 1 */

"_id" : ObjectId("5cdbde9564173957bc9e3931"),
"动漫名" : "火影忍者",
"女主" : "日向雏田",
"年龄" : "24"

1
2
3
4
5
6
7
返回或者剔除指定的字段:
1代表返回该字段
0代表剔除该字段
实例1 : 只返回年龄和姓名字段

db.getCollection(‘MY_TEST‘).find(, "年龄" : 1, "姓名" : 1)
1
结果1:

实例2 : 除了年龄和姓名字段,剩下全部显示 :

db.getCollection(‘MY_TEST‘).find(, "年龄" : 0, "姓名:" : 0)
1
结果2:


查询结果数目或者限制条数
查询结果数目语法 : count()
限制返回条数语法: limit(条数)
查询结果数目实例:

db.getCollection(‘MY_TEST‘).find().count();
1
结果: 8
限制返回记录实例: 返回两条结果:

db.getCollection(‘MY_TEST‘).find().limit(2)
1
结果:

/* 1 */

"_id" : ObjectId("5cdbdad464173957bc9e392a"),
"日期" : "20190915",
"作者" : "xmr",
"目标" : "整理mongo语法"


/* 2 */

"_id" : ObjectId("5cdbdbac64173957bc9e392b"),
"日期" : "20190915",
"作者" : "xmr",
"目标" : "整理mongo语法"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
排序
语法 : sort(“字段名” : 1 or -1) 其中 :1表示正序, -1表示倒序
实例一: 将年龄大于23且年龄小于等于35的结果按照年龄逆序排列

db.getCollection(‘MY_TEST‘).find("年龄" : "$gt" : "23", "$lte" : "35").sort("年龄" :-1)
1
返回结果如下:


修改操作 :
语法 : updateOne() 修改单条数据
updateMany()修改多条数据
举例: 把表里面所有年龄小于23数据的姓名更改为日向雏田

db.getCollection(‘MY_TEST‘).updateMany("年龄": "$lte":"23", "$set": "姓名:":"日向雏田")
1
执行结果:

/* 1 */

"acknowledged" : true,
"matchedCount" : 3.0,
"modifiedCount" : 3.0

```
从结果上面看,有三条记录被更改,查询表格查看修改结果:

```java
db.getCollection(‘MY_TEST‘).find("年龄": "$lte":"23")
1
2
3
4
5
6
7
8
9
10
11
可以看到: 年龄小于等于23结果的姓名全部被修改成为日向雏田


删除操作,谨慎使用!
语法 : deleteOne() 删除一条
deleteMany() 删除多条
实例1 : 删除表格里面年龄为35的第一条记录

db.getCollection(‘MY_TEST‘).deleteOne("年龄":"35")
1
删除之后执行命令 :

db.getCollection(‘MY_TEST‘).find()
1
从结果中可以看到,原来年龄为35的一条记录被删除了:


实例2 : 删除表格里面作者为xmr的全部记录

db.getCollection(‘MY_TEST‘).deleteMany("作者":"xmr")
1
执行结果: 可以看到有两条记录被删除

/* 1 */

"acknowledged" : true,
"deletedCount" : 2.0

1
2
3
4
5
查询数据库 :

db.getCollection(‘MY_TEST‘).find()
1
可以看到 : 所有作者为xmr的数据全部被删除了


数据去重
语法: distinct()
实例1 :对年龄字段进行去重

db.getCollection(‘MY_TEST‘).distinct("年龄" )
1
结果1:

/* 1 */
[
"23",
"24",
"22"
]
1
2
3
4
5
6
实例2: 对年龄大于等于23的结果进行去重

db.getCollection(‘MY_TEST‘).distinct("年龄" , "年龄" :"$gte" : "23")
1
返回结果:

/* 1 */
[
"23",
"24"
]
1
2
3
4
5
注意 : distinct(http://www.my516.com)去重之后不允许带有其它字段,所以其使用具有很大的局限性!
--------------------- 

以上是关于MongoDB基本操作总结的主要内容,如果未能解决你的问题,请参考以下文章

04 MongoDB各种查询操作 以及聚合操作总结

MongoDB中的索引操作总结

05 MongoDB对列的各种操作总结

03 MongoDB文档的各种增加更新删除操作总结

04 MongoDB各种查询操作 以及聚合操作总结

MongoDB 分片总结