开发者学堂课程【场景实践 - 基于MongoDB实现商品管理系统:Mongodb的练习讲解】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/728/detail/12998
Mongodb的练习讲解
一、练习
1.创建一个数据库
use [databaseName]
如果创建的数据库不存在,use表示创建数据库;如果创建的数据库存在,就表示切换到数据库;但使用use创建不存在数据库时,需要注意一些事项:
在创建数据库之前,查看当前数据库,之后创建一个 itcast 数据库:
>show dbs
local (empty)
>use itcast
Switched to db itcast
>show dbs
Local (empty)
>
当我们进行查看时发现,没有看见 itcast 数据库,注意:使用use创建不存在数据库时,如果不对里面进行集合、document 操作,那这个数据库就是不存在的。故需要对数据库添加集合操作才能查看数据库是否存在
2.查看所有数据库
show dbs
3.给指定数据库添加集合并且添加记录
db.[collectionName].insert({…})
如何集合存在,直接插入数据,如果集合不存在,待创建完数据库之后再插入数据。
格式:
db.表名(collectionName集合名).insert({…….)或者db.表名(collectionNarme集合名).insert(对象名)
①先用use itcast命令,创建itcast数据库use itcast
②建立两个对象
③把这两个对象保存到数据库中的某一个张表即集合collection中
之前已经完成操作①,接下来进行操作②
两个对象如下:
>person={“name”:“heixuanfeng”
{“name”:“heixuanfeng”}
>animal={“name”:“cat”}
{“name”:“cat”}
由于 Mongodb 是非关系型数据库,可以存储不同类型数据,比如一个是 person,一个是animal,我们已经发现 Mongodb 的格式类似于 JSON,下面简单写一下两个对象:
>person={“name”:“heixuanfeng”
{“name”:“heixuanfeng”}
>animal={“name”:“cat”}
{“name”:“cat”}
>db.persons.insert(person)
>db.persons.insert(animal)
>show dbs
Itcast 0.078125GB
local (empty)
以上就表示插入数据成功,0.078125GB表示当前数据库的大小。之后查看当前数据库的集合:
>show collections
persons
system.indexes
>
说明:
(1)db属于固定写法,表示数据库 itcast 的意思。
(2)persons 代表一张表即集合。而这里为 collection.
(3)在 mongodb 中,collection 也是可以动态创建的。也就是说当执行这行命令的时候,如果没有该collection,会动态的创建该collection。
(4)大家可以看到,有一行记录为person,而另一行记录为animal,这两行记录的key值明显不一样。所以collection的结构是随意的,不受约束的。
(5)利用db.集合名.find()方法可以查询到collection中的所有的数据
接下来查看一下:
db. persons.find()
"_id": ObjectId("5aa8cc59baf95f1915073ea3"),"name" : "heixuanfeng"}
"_id" : 0bjectId("5aa8cc63baf95f191 73ea4"'),"name" : " cat"}
_id表示关系型数据库的id,默认类型是objectedid,如果不插入会自动生成。
4.查看数据库中的所有文档
show collections
>show collections
persons
system.indexes
>
说明:system.indexes 是自动生成的集合,存储所有索引的。
5.查询制定文档的数据
查询所有db.[collectionName].find()
查询第一条数据db.[collectionName].findOne()
说明:
1)当我们向表即集合中添加数据的时候,如果不指定id,那么MongoDB会自动添加一个名字叫_id的id,属于Objectld对象类型.
2) _id Key
Mongodb 支持的数据类型中,_id是内部的。
在 mongodb 的每一个 Document 中都有一个默认的主键_id,该主键的名称是固定的。它可以是 mongodb 支持的任意数据类型。默认是Objectld。在关系型数据库中主键能设置为数值类型的。
由于 mongodb 是分布式数据库,所以不支持自动增长。
在一个 document 中,主键也可以不是Objectld类型,例如我可以插入一行数据为:{_id:1,name:asdf},但是值必须是唯一的。
db.persons.insert(i_id:1, "name" :"dog"})
db.persons.find(
{"_id” : ObjectId("5aa8cc59baf95f1915073ea3"), “name" : "heixuanfeng" }
{"_id" : ObjectId("5aa8cc63baf95f1915073ea4"),"name" : "cat"}
{"-id" : 1,"name": " dog"}
需求:查询persons集合中的第一条数据
db.persons.findOne()
{" _id" : ObjectId("5aa8cc59baf95f1915073ea3"), "name" : "heixuanfeng"}
6.更新文档数据
db.[collectionName].update({查询条件},{更新内容})
例子:
var p=db.persons.findOne()
db.persons.update(p.{iname:"uspcat"})
需求:将 name 是 heixuanfeng 名字改为 likui
要先进行查询,再进行更新,因为name是heixuanfeng的是第一条数据,所以:
db.persons.update(db.persons.findOne(),{"name" : "likui"})
db.persons.findOne()
{"_id” : 0bjectId("5aa8cc59baf95f1915073ea3"),“name" : "likui"}
7.删除文档中的数据
db.[collectionName].remove({…})
例子: db.persons.remove({name:"uspcat"})
需求:删除 name 是 likui 的数据
首先查看所有:
>db. persons.find()
{"_id” : 0bjectId("5aa8cc59baf95f1915073ea3"),“name" : "likui"}
{"_id" : 0bjectId("5aa8cc59baf95f1915073ea4"",“name" : " cat”}
{"_id" : 1,"name": " dog"}
db.persons.remove( {"name" :"1ikui"})
db.persons.find()
{"_id" : ObjectId("5aa8cc63baf95f11 15073ea”),“name”:“cat”}
{"_id" : 1,"name": " dog”}