3.数据库操作
3.1 数据库的创建和删除
创建、切换指令:use dbname
,如果名为dbname的数据库存在,那么切换到该数据库,否则创建该数据库。
展示当前mongoDB中的数据库列表:show dbs
,新建的数据库中必须有记录才会在列表中出现。
删除数据库:db.dropDatabase()
,执行后删除当前数据库。
3.2 集合的创建和删除
创建指令:db.createCollection(name,options)
,参数name
为集合的名称,options
是可选参数,在使用时形如JavaScript数组{ capped : true, autoIndexId : true, size : 6142800, max : 10000 }
,如下:
字段 | 类型 | 描述 |
---|---|---|
capped | 布尔 | 如果为true,则创建固定集合,指有固定大小的集合,当达到最大值时,会自动覆盖最早的文档,当capped为true时,必须要指定size参数 |
autoIndexId | 布尔 | 默认false,如果是true,则自动在_id上创建索引 |
size | 数值 | 为固定集合指定一个最大值 |
max | 数值 | 指定固定集合包含文档的最大数量 |
在插入文档时,MongoDB先检查固定集合的size字段,再检查max字段。
查看数据库中已经有的集合:show collections
。
在实际的操作过程中未必需要进行创建操作,我们对数据库执行插入文档操作时,会自动创建对应的集合。如db.mycol2.insert({"name" : "张三"})
,则会自动创建集合mycol2。
集合删除指令:db.collectionName.drop()
,则删除名为collectionName的集合。
3.3 文档操作
插入指令:db.COLLECTION_NAME.insert(document)
,document指json规范的对象。我们也可以先行定义一个json对象document={"author" : "张三","title":"MongoDB笔记","abstract":"MongoDB是一种非关系数据库","tag":['mongodb', 'database', 'NoSQL']}
,然后执行db.COLLECTION_NAME.insert(document)
。
查看指令:db.COLLECTION_NAME.find(query, projection)
,即可查看集合COLLECTION_NAME中插入的文档。
更新指令:
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
其中:
- query:update的查询条件,相当于SQL中的WHERE子句;
- update:update的对象和一些更新的操作符(如 , , <script type="math/tex" id="MathJax-Element-2">,</script>inc…)等,相当于sql update中的SET子句;
- upsert:可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入;
- multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新;
- writeConcern :可选,抛出异常的级别。
更新操作的实例:db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
替换文档指令:
db.collection.save(
<document>,
{
writeConcern: <document>
}
)
参数:
- document:传入的文档
- writeConcern :可选,抛出异常的级别。
删除文档操作:
db.collection.remove(
<query>,
<justOne>
)
- query :(可选)删除的文档的条件
- justOne : (可选)如果设为 true 或 1,则只删除一个文档。
limit指令,用于从数据库中获取指定数量的数据记录,它可以接受一个数字参数:db.COLLECTION_NAME.find().limit(NUMBER)
。
skip指令用于跳过指定数量的数据记录,同样接受一个数字参数:db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
,limit和skip的结合使用可以实现关系型数据库中的分页查询效果。