MongoDB简介
MongoDB是一种文档型的非关系型数据库(NoSQL),举例如下:
{“foo”:3,"greeting":"Hello,world!"}
并且区分大小写,key值唯一,不可重复,文档可以嵌套,键值对是有序的
集合
1、集合就是一组文档
2、文档类似于关系库里的行
3、集合类似于关系库里的表
4、集合里的文档无需固定的结构(与关系型数据库的区别)
集合的命名
1、不能是空字符串
2、不能包含\0字符(空字符)
3、不能使用system.的前缀
4、建议不包含保留字“$”
5、用.分割不同命名空间的子集合(如:blog.users)
数据库
1、多个文档组成集合,多个集合组成数据库
2、一个实例可以承载多个数据库
3、每个数据库都有独立的权限
4、保留的数据库名称(admin,local,config)
命令行操作MongoDB
参考菜鸟教程
在\MongoDB\Server\3.4\bin进入命令行窗口,然后敲mongo即进入MongoDB服务,显示所有数据库
> show dbs;
使用某一数据库(如果不存在的话则会自动新建)
> use 数据库名称;
插入数据
写数据
> stu = { name:‘Jhon‘, age:21, "sex":"male" }
插入数据
> db.数据库名称.insert(stu)
查询数据
> db.数据库名称.find()
更新数据
> stu_obj = db.students.findOne() { "_id" : ObjectId("5a9a01c5b1489e70f3a89a0c"), "name" : "Jhon", "age" : 21, "sex" : "male" } > stu_obj.name = "Jackchen" Jackchen > db.students.update({name:"Jhon"},stu_obj) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.students.findOne() { "_id" : ObjectId("5a9a01c5b1489e70f3a89a0c"), "name" : "Jackchen", "age" : 21, "sex" : "male" }
更新数据时,update里第二个参数会完全代替前一个参数,所以如果第二个参数只有{name:"**"},会把原来的数据删除
如果要更新多个数据,则可以使用updateMany
总结:这种方式更新数据相当麻烦,可以用修改器
删除数据
原来是三条数据:
> db.students.find() { "_id" : ObjectId("5a9a01c5b1489e70f3a89a0c"), "name" : "Jhon", "age" : 21, "sex" : "male" } { "_id" : ObjectId("5a9a04d9b1489e70f3a89a0d"), "name" : "oldhu" } { "_id" : ObjectId("5a9a09a3b1489e70f3a89a0e"), "name" : "Amy", "age" : 16, "sex" : "male" }
删除其中一条:
> db.students.remove({name:"oldhu"}) WriteResult({ "nRemoved" : 1 }) > db.students.find() { "_id" : ObjectId("5a9a01c5b1489e70f3a89a0c"), "name" : "Jackchen", "age" : 21, "sex" : "male" } { "_id" : ObjectId("5a9a09a3b1489e70f3a89a0e"), "name" : "Amy", "age" : 16, "sex" : "male" }
删除全部:
> db.students.remove({}) WriteResult({ "nRemoved" : 2 }) > db.students.find() >