提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
提示:这里可以添加本文要记录的大概内容:
mongodb4.4链接:https://pan.baidu.com/s/1q8oAMGCzVvh2qf2q2PI0cw?pwd=1234
提取码:1234




db.people.insert({_id:1,name:"zhangsan",sex:"男",age:21})
db.people.insert({_id:2,name:"lisi",sex:"男",age:20})
db.people.insert({_id:3,name:"wangwu",sex:"女",age:20})
db.people.insert({_id:4,name:"zhaoliu",sex:"女",age:18})
db.people.insert({_id:5,name:"wuqi",sex:"男",age:19})
db.people.find()

_id唯一标识文档,如果文档中已经存在_id:5,此时再插入会报错

当然也可以使用insertMany()函数一次插入多个文档
//插入3个文档,使用insertMany()函数
db.col.insertMany([
{
title: 'MongoDB Overview',
description: 'MongoDB is no sql database',
by_user: 'runoob.com',
url: 'http://www.runoob.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
},
{
title: 'NoSQL Overview',
description: 'No sql database is very fast',
by_user: 'runoob.com',
url: 'http://www.runoob.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 10
},
{
title: 'Neo4j Overview',
description: 'Neo4j is no sql database',
by_user: 'Neo4j',
url: 'http://www.neo4j.com',
tags: ['neo4j', 'database', 'NoSQL'],
likes: 750
}])

更新第一个文档,将“zhangsan”改为"zhangsanfeng"
db.people.update({_id:1},{$set:{name:"zhangsanfeng"}})

remove()是删除集合中所有文档,执行后仍然存在people集合
db.people.remove({})

而drop()是删除集合,执行后不存在people集合
db.people.drop()


4.1 查询年龄大于19岁的人数
db.people.find({age:{$gt:19}})

4.2 查询年龄小于等于20岁的人数
db.people.find({age:{$lte:20}})

4.3 AND操作
db.people.insert({_id:6,name:"lisi",sex:"男",age:20})
db.people.insert({_id:7,name:"lisi",sex:"男",age:21})
db.people.find()

此时有三个name="lisi"的文档,如何查找年龄为20的lisi?通过AND操作
db.people.find({name:"lisi",age:21})

两个key-value之间通过逗号隔开即可
4.4 OR操作
查找wangwu或者zhaoliu的信息
db.people.find({$or:[{name:"wangwu"},{name:"zhaoliu"}]})

注意OR和AND的区别,OR两个key-value之间是用{}分开的。
//1. 统计男生、女生的总年龄
db.people.aggregate([
{$group:{_id:"$sex",age_sum:{$sum:"$age"}}}
])

//2.统计男生女生的总人数
db.people.aggregate([
{$group:{_id:"$sex",people_sum:{$sum:1}}}
])

$sum:1表示统计总数,比如男为3位,女为2位
//3.求学生总数和平均年龄
db.people.aggregate([
{$group:{_id:null,people_sum:{$sum:1},
avg_age:{$avg:"$age"}}}
])

//4.查询男生、女生人数,按人数升序
db.people.aggregate([
{$group:{_id:"$sex",people_sum:{$sum:1}}},
{$sort:{people_sum:1}}
])

$sort中,1为升序,-1为降序
//5.先按性别分组,分完组之后将age属性映射到数组中:
db.people.aggregate([
{$group:{_id:"$sex",num:{$push:"$age"}}}
])

什么是索引?为什么需要索引?
相当于书的目录,减少查询时间
//插入10万条数据对比索引优点
for(var i=0;i<100000;i++)
db.col2.insert({name:'a',time:i})
db.col2.find()

5.1 不使用索引查询time:100-20000间的数据耗时29ms
db.col2.find({time:{$gt:100,$lt:20000}}).explain("executionStats")

5.2 创建索引后再来查询
创建索引
db.col2.createIndex({time:1})

5.3 查询索引
db.col2.getIndexes()

5.4 删除索引
db.col2.dropIndex("time_1")

此时time_1索引已被删除,最好是退出后重新查询,可以看到耗时0毫秒
db.col2.find({time:{$gt:100,$lt:20000}}).explain("executionStats")

5.5 索引几种类型
5.5.1 组合(复合)索引
同时创建两个及以上索引
db.col2.createIndex({"name":1,"time":-1})

5.5.2 多值索引
db.col3.insert({name:"lisi",tag:["a","b","c"]})
db.col3.createIndex({tag:1})
db.col3.find({tag:"b"})

5.5.3 全文索引
db.col3.createIndex({"name":"text"})

索引
创建索引
查看
以上就是今天要讲的内容,本文仅仅简单介绍了mongoDB的使用,而mongoDB提供了大量能使我们快速便捷地处理数据的函数和方法。