mongodb的基本概念有集合collection(表)、文档document(行)、数据字段/域field、索引index、mongodb不支持表连接、而且mongodb主键primary key会自动将_id设置为主键。
接下来就讲解一下命令:
1、mongo 可以直接进入mongodb shell操作界面
2、show dbs 查看mongodb的数据库,db是mongodb默认的数据库,存储在db目录下
3、use 数据库名称,比如use local,就是切换到数据库local,这个use和mysql的操作语法是一样的
4、db,可以查看当前所在的数据库名称
5、文档就是一组键值对key-value,也就是BSON,JSON格式。
类似
{"site":"www.runoob.com", "name":"CHEN"}
集合就是MongoDB的文档组,类似表格,没有固定的结构。所以可以插入不同格式,不同数据类型的数据。但是通常我们插入的数据,都是有一定关联性的。
{"site":"www.baidu.com"}
{"site":"www.google.com","name":"Google"}
{"site":"www.runoob.com","name":"CHEN","num":5}
6、插入数据
db.runoob.insert({"name":"chendang"})
创建集合并插入数据
也可以创建一个对象docu={"school":"xiamenyizhong","sex":"boy"},然后采用save()或者insert()保存。
7、删除数据库zznj,首先要切换到zznj数据库,use zznj,然后进行删除
8、创建集合,集合名为test,也就是表格
db.createCollection("test")
删除集合
查询所有集合 show tables
删除集合 db.test.drop()
查询集合里的数据 db.test.find(),语法:db.集合名.find()
9、文档的结构和JSON基本一样,BJSON是json的一种二进制形式的存储格式,简称Binary JSON。
10、更新集合里的文档
db.test.update({"school":"xiamenyizhong"},{"school":"tonganyizhong"},false,false)
第一个参数是条件,相当于where;第二个参数是要修改的数据;第三个参数是upsert,默认false,代表如果不存在符合条件的数据是否要插入;第四个参数默认false,代表是否只更新第一条查询结果,true则全部更新,因为可能查询有多条。
单条更新,可以不加$set(一些更新的操作符(如$,$inc...)等),多条就要加,不然会出错
11、保存db.test.save(),如果_id一样的话,效果也是直接替换。
12、删除文档db.test.remove({"age":27}),删除age=27的数据。如果是db.test.remove({"age":27},1),加参数1,表示
只删除查询结果的第一条,不加1,默认删除全部查询结果。
13、db.test.find(),查询find括号里可以加添加,比如截图:
14、where 大小比较
db.test.find({"age":{$gt:20}}) 查看test集合中age大于等于20的文档 where age>20
db.test.find({"age":{$lt:20}}) => where age<20
db.test.find({"age":{$ge:20}}) => where age>=20
db.test.find({"age":{$le:20}}) => where age<=20
db.test.find({"age":{$ne:20}})=>where age!=20
15、And 查询
db.test.find({"age":21,"name":"chendang"}) 查询出age为21和name为chendag的文档
16、OR查询
db.test.find({$or[{"age":21},{"age":2}]})
17、$type根据域的类型作为查询条件
db.user.find({"name",{$type:'string'}}) 查询name域的值为string类型的文档,也可以根据类型对应的值,填值查询。
类型对应值查询http://www.runoob.com/mongodb/mongodb-operators-type.html
18、limit根据查询结果限制条数
db.user.find().limit(2)
19、skip(1)跳过查询结果的第一条
db.user.find().skip(1)
20、sort排序,1升序,-1降序
db.user.find().sort({"age",-1})
skip(), limilt(), sort()三个放在一起执行的时候,执行的顺序是先 sort(), 然后是 skip(),最后是显示的 limit()。
21、创建索引
db.user.createIndex({"age":1}) 创建索引age,1表示按升序创建,-1表示按降序来创建
22、MongoDB的聚合,就是那些统计函数
23、MongoDB复制,复制就是先数据同步到多台服务器上,提供数据冗余备份,复制允许从硬件故障中断恢复数据。
还可以进行分片,服务器运行一定的时间,存储容量不足,就需要在多台机器上,分割数据,才能存储更多的数据。