MongoDB的CRUD

文档的插入

1、单个插入

> db.col.insert({"name":"孟翔丁","age":21,"sex":"男"})

2、批量插入

> db.col.insertMany([ 
{"name":"刘逸霏",  "age":20, "sex":"女"}, 
{"name":"孟翔丁", "age":20,  "sex":"女"}  
]);

文档的查询

1、查询所有

> db.col.find()
{ "_id" : ObjectId("60cb6023e0463b77b09c44ff"), "name" : "孟翔丁", "age" : 21, "sex" : "男" }
{ "_id" : ObjectId("60cb60c1e0463b77b09c4500"), "name" : "刘逸霏", "age" : 20, "sex" : "女" }
{ "_id" : ObjectId("60cb60c1e0463b77b09c4501"), "name" : "孟翔丁", "age" : 20, "sex" : "女" }

2、条件查询

# 查询名字为 孟翔丁 的所有数据
> db.col.find({"name":"孟翔丁"}).pretty()
{
        "_id" : ObjectId("60cb6023e0463b77b09c44ff"),
        "name" : "孟翔丁",
        "age" : 21,
        "sex" : "男"
}
{
        "_id" : ObjectId("60cb60c1e0463b77b09c4501"),
        "name" : "孟翔丁",
        "age" : 20,
        "sex" : "男"
}

# 查询名字为 孟翔丁 的第一条数据
> db.col.findOne({"name":"孟翔丁"},{"age":1})
{ "_id" : ObjectId("60cb6023e0463b77b09c44ff"), "age" : 21 }
{ "_id" : ObjectId("60cb60c1e0463b77b09c4501"), "age" : 20 }

3、投影查询

# 查询名字为 孟翔丁的,但是只显示 age字段,_id 是默认显示
> db.col.find({"name":"孟翔丁"},{"age":1})
{ "_id" : ObjectId("60cb6023e0463b77b09c44ff"), "age" : 21 }
{ "_id" : ObjectId("60cb60c1e0463b77b09c4501"), "age" : 20 }

> db.col.findOne({"name":"孟翔丁"},{"age":1})
{ "_id" : ObjectId("60cb6023e0463b77b09c44ff"), "age" : 21 }

# 这样子就可以不显示 _id 
> db.col.find({"name":"孟翔丁"},{"age":1,"_id":0})
{ "age" : 21 }
{ "age" : 20 }

 4、特殊查询    ####$lt $lte $gt $gte####  以上四个分别表示为:< 、 <= 、 > 、 >=

# 查询age 是 19或者20的人
> db.col.find({"age":{"$in":[19,20]}}).pretty()
{
        "_id" : ObjectId("60cb6023e0463b77b09c44ff"),
        "name" : "孟翔丁",
        "age" : 20,
        "sex" : "男"
}
{ "_id" : ObjectId("60cb60c1e0463b77b09c4500"), "age" : 19 }
{
        "_id" : ObjectId("60cb60c1e0463b77b09c4501"),
        "name" : "孟翔丁",
        "age" : 20,
        "sex" : "男"
}

# 查询age 在18到25之间  即 18 < age < 20
> db.col.find({"age":{"$gt":18,"$lt":20}})
{ "_id" : ObjectId("60cb60c1e0463b77b09c4500"), "age" : 19 }
 

这样的范围查询对查询日期特别有用 比如,查询在2015年1月1日后注册的用户

start = new Date("01/01/2015") db.user.find({"register":{"$gte":start}})

 文档的分页查询

1、统计查询

> db.col.count()
3

2、分页列表查询

# 全部数据
> db.col.find()
{ "_id" : ObjectId("60cb6023e0463b77b09c44ff"), "name" : "孟翔丁", "age" : 20, "sex" : "男" }
{ "_id" : ObjectId("60cb60c1e0463b77b09c4500"), "age" : 19 }
{ "_id" : ObjectId("60cb60c1e0463b77b09c4501"), "name" : "孟翔丁", "age" : 20, "sex" : "男" }
{ "_id" : ObjectId("60cb6802e0463b77b09c4502"), "name" : "古天乐", "age" : 40, "sex" : "男" }
{ "_id" : ObjectId("60cb6802e0463b77b09c4503"), "name" : "刘德华", "age" : 40, "sex" : "男" }

# 找出前2条数据
> db.col.find().limit(2)
{ "_id" : ObjectId("60cb6023e0463b77b09c44ff"), "name" : "孟翔丁", "age" : 20, "sex" : "男" }
{ "_id" : ObjectId("60cb60c1e0463b77b09c4500"), "age" : 19 }

# 跳过两条数据,找两条数据
> db.col.find().skip(2).limit(2)
{ "_id" : ObjectId("60cb60c1e0463b77b09c4501"), "name" : "孟翔丁", "age" : 20, "sex" : "男" }
{ "_id" : ObjectId("60cb6802e0463b77b09c4502"), "name" : "古天乐", "age" : 40, "sex" : "男" }

3、排序查询,1 代表升序,-1 代表降序

> db.col.find().sort({"_id":1})
{ "_id" : ObjectId("60cb6023e0463b77b09c44ff"), "name" : "孟翔丁", "age" : 20, "sex" : "男" }
{ "_id" : ObjectId("60cb60c1e0463b77b09c4500"), "age" : 19 }
{ "_id" : ObjectId("60cb60c1e0463b77b09c4501"), "name" : "孟翔丁", "age" : 20, "sex" : "男" }
{ "_id" : ObjectId("60cb6802e0463b77b09c4502"), "name" : "古天乐", "age" : 40, "sex" : "男" }
{ "_id" : ObjectId("60cb6802e0463b77b09c4503"), "name" : "刘德华", "age" : 40, "sex" : "男" }

> db.col.find().sort({"_id":-1})
{ "_id" : ObjectId("60cb6802e0463b77b09c4503"), "name" : "刘德华", "age" : 40, "sex" : "男" }
{ "_id" : ObjectId("60cb6802e0463b77b09c4502"), "name" : "古天乐", "age" : 40, "sex" : "男" }
{ "_id" : ObjectId("60cb60c1e0463b77b09c4501"), "name" : "孟翔丁", "age" : 20, "sex" : "男" }
{ "_id" : ObjectId("60cb60c1e0463b77b09c4500"), "age" : 19 }
{ "_id" : ObjectId("60cb6023e0463b77b09c44ff"), "name" : "孟翔丁", "age" : 20, "sex" : "男" }

文档的更新

1、覆盖修改

# 使用这个  该数据行 只剩 age 字段
> db.col.update({"name":"刘逸霏"},{"age":19})

> db.col.find()
{ "_id" : ObjectId("60cb6023e0463b77b09c44ff"), "name" : "孟翔丁", "age" : 21, "sex" : "男" }
{ "_id" : ObjectId("60cb60c1e0463b77b09c4500"), "age" : 19 }
{ "_id" : ObjectId("60cb60c1e0463b77b09c4501"), "name" : "孟翔丁", "age" : 20, "sex" : "男" }

2、局部修改

# 保留其他字段,只修改age字段  并且只修改第一条数据
> db.col.update({"name":"孟翔丁"},{$set:{"age":20}})

# 保留其他字段,只修改age字段  并且修改所有匹配的数据
> db.col.update({"name":"孟翔丁"},{$set:{"age":20}},{multi:true})

3、自增

增1
> db.web.find()
{ "_id" : ObjectId("60cc5de3cb7261d00e4f9583"), "url" : "www.baidu1.com", "count" : 4 }

> db.web.update({"url":"www.baidu1.com"},{$inc:{"count":1}})

> db.web.find()
{ "_id" : ObjectId("60cc5de3cb7261d00e4f9583"), "url" : "www.baidu1.com", "count" : 5 }

增2
> db.web.update({"url":"www.baidu1.com"},{$inc:{"count":2}})

> db.web.find()
{ "_id" : ObjectId("60cc5de3cb7261d00e4f9583"), "url" : "www.baidu1.com", "count" : 7 }

4、增加字段  原来没有ip,使用命令增加ip字段

> db.web.find()
{ "_id" : ObjectId("60cc5de3cb7261d00e4f9583"), "url" : "www.baidu1.com", "count" : 7 }

> db.web.update({"url":"www.baidu1.com"},{"$set":{"ip":"0.0.0.0.1"}})

> db.web.find().pretty()
{
        "_id" : ObjectId("60cc5de3cb7261d00e4f9583"),
        "url" : "www.baidu1.com",
        "count" : 7,
        "ip" : "0.0.0.0.1"
}

文档的删除

1、删除所有文档  慎用

db.comment.remove({})

2、删除所有匹配的数据

db.comment.remove({"name":"孟翔丁"})

 

索引的管理操作

1、索引的查看

语法:db.collection.getIndexes()

> db.student.getIndexes()
[
        {
                "v" : 2,
                "key" : {
                        "_id" : 1
                },
                "name" : "_id_",
                "ns" : "mongo.student"
        }
]

2、创建索引

语法:db.collections.createIndex(keys,options)

keys:要给哪些字段建立索引

  2.1、单值索引

> db.mongo.createIndex({"userId":1})
{
        "createdCollectionAutomatically" : false,
        "numIndexesBefore" : 1,
        "numIndexesAfter" : 2,
        "ok" : 1
}

> db.mongo.getIndexes()
[
        {
                "v" : 2,
                "key" : {
                        "_id" : 1
                },
                "name" : "_id_",
                "ns" : "mongo.mongo"
        },
        {
                "v" : 2,
                "key" : {
                        "userId" : 1
                },
                "name" : "userId_1",
                "ns" : "mongo.mongo"
        }
]

  2.2、复合索引

> db.mongo.createIndex({"userId":1,"stuName":-1})
{
        "createdCollectionAutomatically" : false,
        "numIndexesBefore" : 2,
        "numIndexesAfter" : 3,
        "ok" : 1
}

> db.mongo.getIndexes()
[
        {
                "v" : 2,
                "key" : {
                        "_id" : 1
                },
                "name" : "_id_",
                "ns" : "mongo.mongo"
        },
        {
                "v" : 2,
                "key" : {
                        "userId" : 1
                },
                "name" : "userId_1",
                "ns" : "mongo.mongo"
        },
        {
                "v" : 2,
                "key" : {
                        "userId" : 1,
                        "stuName" : -1
                },
                "name" : "userId_1_stuName_-1",
                "ns" : "mongo.mongo"
        }
]

3、索引的删除 

语法:db.collections.dropIndex(index)

  3.1、根据字段 : 1/-1  删除索引

> db.mongo.dropIndex({"userId":1})
{ "nIndexesWas" : 3, "ok" : 1 }

> db.mongo.getIndexes()
[
        {
                "v" : 2,
                "key" : {
                        "_id" : 1
                },
                "name" : "_id_",
                "ns" : "mongo.mongo"
        },
        {
                "v" : 2,
                "key" : {
                        "userId" : 1,
                        "stuName" : -1
                },
                "name" : "userId_1_stuName_-1",
                "ns" : "mongo.mongo"
        }
]

   3.2、根据索引名称删除索引

> db.mongo.dropIndex("userId_1_stuName_-1")
{ "nIndexesWas" : 2, "ok" : 1 }

> db.mongo.getIndexes()
[
        {
                "v" : 2,
                "key" : {
                        "_id" : 1
                },
                "name" : "_id_",
                "ns" : "mongo.mongo"
        }
]

   3.3、删除所有索引

> db.mongo.dropIndexes()

索引的使用

1、执行计划:分析查询语句是否用到索引

语法:db.collection.find(query,options).explain(options)

 

 

聚合操作

$match: 查找条件匹配

$project: 字段筛选, 也可以用来重命名字段

$group: 聚合操作,类似mysql的 group by

$sort: 排序

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,时间越久管理的内容越多,也需要更多的人来对数据进行整理,并且数据的汇总查询方面效率也是极其的低下,并且数据安全方面永远不会保证安全性能。结合数据内容管理的种种缺点,在互联网时代都可以得到有效的补充。结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。本次开发的医院后台管理系统实现了病房管理、病例管理、处方管理、字典管理、公告信息管理、患者管理、药品管理、医生管理、预约医生管理、住院管理、管理员管理等功能。系统用到了关系型数据库中王者MySql作为系统的数据库,有效的对数据进行安全的存储,有效的备份,对数据可靠性方面得到了保证。并且程序也具备程序需求的所有功能,使得操作性还是安全性都大大提高,让医院后台管理系统更能从理念走到现实,确确实实的让人们提升信息处理效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值