在MongoDB非关系型数据库中,没有表的概念,所以存储数据比较灵活,因为不需要创建表,所以不用提前规定有哪些字段、字段的数据类型、字段是否可以为空、是否必须唯一等等。
例如在MongoDB中,我们可以把如下文档都可以保存到同一个集合中
{name: 'zs', age: 33} name字段的值为字符串
{name: 33,age: 'zs’} name字段的值为整形
{name: null, age: 33] name字段的值为null.
{name: 'zs', age: 33, gender:’男’} 此时集合中变成了三个字段,而不需要提前去创建gender这个字段。
其实关系型数据库和非关系型数据库之间并不是替代关系,而是互补关系所以在实际开发中大部分情况是可以结合在一起使用的。
对于数据模型比较简单、数据性能要求较高、数据灵活性较强的数据,我们可以存储到非关系型数据库中,相反则存储到关系型数据库中
show collections
和MySQL中的 show tables;指令类似
db.createCollection(‘集合名称’);
MySQL中的create table xxx;指令类似
插入单条文档
db.集合名称.insert(文档对象);
db.test.insert({name:'xk',age:11}) #插入单条数据
插入多条文档
db.集合名称.insertMany([文档一,文档二])
db.test.insertMany([{name:'xw',age:12},{name:'xm',age:13}]) # 插入多条文档
和MvSOL中的 insert into xxx values 指令类似
db.collection.find(query, projection)
query:(可选) 查询条件,相当于MySQL中的where
projection:(可选) 投影文档,规定了结果集中显示那些字段,相当于MySQL中的 select 字段1,字段2,… from 表名
# 查询集合中所有文档
db.test.find()
# 查询满足条件的文档(查询name为xw 的文档)
# 方式一
db.test.find({name:'xw'}) # 默认情况下就是按照相等来判断
# 方式二
db.test.find({name:{$eq:'xw'} }) # 显示的指明按照相等来查询
# 多条件查询
db.test.find({name:'xw',age:22})
如果不传任何参数,查询集合中所有数据,在开发中很少这么用,一般都会配合query来使用
db.集合名称.drop()
和MySQL中的 drop table xxx; 指令类似
db.dropDatabase() 在哪个数据库中就会删除哪个数据库