mongodb官网
mongod 是用来连接到mongodb数据库服务器的,即服务器端。
mongo 是用来启动MongoDB shell的,是mongodb的命令行客户端。
1.mac安装mongodb
$ brew install mongodb
打开终端进入一个文件夹执行下面命令:
$ mongod --config /usr/local/etc/mongod.conf
$ mongod --dbpath filepath(如果是空文件夹会自动创建数据库)
连接完成后可以通过http访问该数据库,mongodb默认使用了27017端口,因此在浏览器中打开http://localhost:27017可以显示一段英文表示连接成功。
注意:一般我们数据库都设置登录密码,上一步可以这么执行
$ mongod --dbpath filepath --port 20000 --auth
设置了端口号为20000,并设置了需要auth权限,下面就得设置权限了
用户管理员的角色名叫 userAdminAnyDatabase,这个角色只能在 admin 数据库中创建。
$ mongo
$ use test (这里创建了一个test集合)
$ use admin
$ db.createUser({user:"root",pwd:"root123",roles:["userAdminAnyDatabase"]})
$ db.createUser({user:"testuser",pwd:"testpass",roles:["readWrite"]})
$ db.auth("root","root123") 返回 1 表示登录成功
$ db.auth("testuser","testpass") // 返回1
基本语法
使用数据库:$ use dbname (use一个不存在的数据库就相当于新建)
想查看当前在哪个数据库里:$ db
列出所有数据库:$ show dbs
显示集合:$ show collections
$ mongo
注意:如果连接没设定--port端口号默认是27017端口
但是设定了端口号的话,使用
$ mongo --port 20000开启mongo
如果还有集合密码的话就输入
$ mongo --port 20000 -u testuser -p testpass 这里指定了连接的端口和权限密码
具体可以 $ mongo --help查看
如果连接远程数据库 换成 $ mongo 远程IP地址:端口号 -u 用户名 -p 密码
注意没有读写权限,加权限sudo chown 那个文件夹目录,开启读写权限
插入数据: $ db.student.insert({"name":"xiaoming","age":12,"sex":"man"});
student就是所谓的集合。集合中存储着很多json,student是第一次使用,集合将自动创建。
$ db.student.find(); 显示集合内容
我们不可能一条一条的insert。所以,我们希望用sublime在外部写好数据库的形式,然后导入数据库:
$ mongoimport --db test --collection restaurants --drop --file aa.json
--db test 想往哪个数据库里面导入
--collection restaurants 想往哪个集合中导入
--drop 把集合清空
--file aa.json 哪个文件
这样,我们就能用sublime创建一个json文件,然后用mongoimport命令导入,这样学习数据库非常方便。
删除当前所在的数据库:
$ db.dropDatabase();
查找数据
列出这个集合的所有文档:
$ db.restaurants.find()
精确匹配
$ db.student.find({"score.shuxue":70});
多个条件:
$ db.student.find({"score.shuxue":70 , "age":12})
大于条件:
$ db.student.find({"score.yuwen":{$gt:50}});
寻找所有年龄是9岁,或者11岁的学生
$ db.student.find({$or:[{"age":9},{"age":11}]});
查找完毕之后,打点调用sort,表示升降排序。
$ db.restaurants.find().sort( { "borough": 1, "address.zipcode": 1 } )
修改数据
查找名字叫做小明的,把年龄更改为16岁:
$ db.student.update({"name":"小明"},{$set:{"age":16}});
查找数学成绩是70,把年龄更改为33岁:
$ db.student.update({"score.shuxue":70},{$set:{"age":33}});
$ db.student.update({"sex":"男"},{$set:{"age":33}},{multi: true});
完整替换,不出现$set关键字了:
$ db.student.update({"name":"小明"},{"name":"大明","age":16});
删除数据
$ db.restaurants.remove( { "borough": "Manhattan" } )
$ db.restaurants.remove( { "borough": "Queens" }, { justOne: true } )
网友评论