【济南中心】NoSQL非关系型数据库——MongoDB(二)
MongoDB常用操作:
•创建数据库,使用命令use 数据库名称,如:usemydb1
• 删除当前数据库,使用命令 db.dropDatabase()
• 查看所有数据库,使用命令 show dbs
• 查看当前所在数据库,使用命令 db
• 查看当前数据库中所有的集合,使用命令 show collections 或使用show tables
• 创建集合有两种方式,显示创建和隐式创建显示创建可以使用命令db.createCollection(“集合名称")隐式创建可以使用命令db.集合名称.insert({}),指创建集合并同时向集合中插入数据,例如:db.customer.insert({name:”jack”})
• 向集合添加文档,使用命令 db.集合名称.insert({}),例如:db.user1.insert({name:”jack”,age:20})
• 删除集合中的文档,使用命令 db.集合名称.remove({删除条件}),不加删除条件为删除集合中的所有文档,例如,db.c1.remove() 为删除c1集合中的所有文档,db.c1.remove({name:”user1”})为删除c1集合中name为user1的文档
•查询集合中的文档,可以使用命令db.集合名称.find({条件}),或者使用db.集合名称.findOne() 查询第一个文档
• 查询集合中的文档,返回某些特定的键值
• 查询集合中的文档 ,使用条件表达式(<, <=, >, >=,!=)
//大于:field > value db.collection.find({field:{$gt:value}}); //小于:field < value db.collection.find({field:{$lt:value}}); //大于等于:field >= value db.collection.find({field:{$gte:value}}); //小于等于:field <= value db.collection.find({field:{$lte:value}}); //不等于: field!= value db.collection.find({field:{$ne:value}}); |
• 查询集合中的文档 ,$all主要用来查询数组中的包含关系,查询条件中只要有一个不包含就不返回
• 查询集合中的文档 ,$in,类似于关系型数据库中的IN
• 查询集合中的文档 ,$nin,与$in相反
• 查询集合中的文档 ,$or,相当于关系型数据库中的OR,表示或者的关系,例如查询name为user2或者age为3的文档,命令为:
db.customer.find({$or:[{name:”user2”},{age:3}]})
• 查询集合中的文档 ,$nor,表示根据条件过滤掉某些数据,例如查询name不是user2,age不是3的文档,命令为:
db.customer.find({$nor:[{name:”user2”},{age:3}]})
• 查询集合中的文档 ,$exists,用于查询集合中存在某个键的文档或不存在某个键的文档,例如查询customer集合中存在name键的所有文档,可以使用db.customer.find({name:{$exists:1}}),
$exists:1表示真,指存在
$exists:0表示假,指不存在
• 查询集合中的文档 ,统计(count)、排序(sort)、分页(skip、limit)
db.customer.count(); db.customer.find().count(); db.customer.find({age:{$lt:5}}).count(); db.customer.find().sort({age:1}); db.customer.find().skip(2).limit(3); db.customer.find().sort({age:-1}).skip(2).limit(3); db.customer.find().sort({age:-1}).skip(2).limit(3).count(); db.customer.find().sort({age:-1}).skip(2).limit(3).count(0); db.customer.find().sort({age:-1}).skip(2).limit(3).count(1); |
• 查询集合中的文档 ,类似于关系型数据库,mongodb中也有游标的概念
• 更新集合中的文档,语法如下:
db.collection.update(criteria,objNew,upserti)
参数说明: criteria:用于设置查询条件的对象 objNew:用于设置更新内容的对象 upsert:如果记录已经存在,更新它,否则新增一个记录,取值为0或1 注意:默认情况下,只会更新第一个符合条件的记录 一般情况下后两个参数分别为0,1 ,即: db.collection.update(criteria,objNew,0,1) |
• 更新集合中的文档,将集合中name为user1的文档改成name为jack
• 更新集合中的文档, $set用来指定一个键的值,如果这个键不存在,则创建它。例如:
给name为user1的文档添加address,可以使用命令:db.c1.update({name:”user1”},{$set:{address:”bj”}},0,1)
将name为user1的文档修改address为tj,其它键值对不变,命令为:
db.c1.update({name:”user1”},{$set:{address:”tj”}},0,1)
• 更新集合中的文档,使用$inc 将集合中name为user1的age加1,其它键不变, $inc表示使某个键值加减指定的数值
• 更新集合中的文档, $unset用来删除某个键,例如删除name为user1的文档中的address键,可以使用命令:
db.c1.update({name:”user1”},{$unset:{address:1}},0,1)
索引:
索引就是用来加速查询的。数据库索引与书籍的索引类似:有了索引就不需要翻遍整本书,数据库则可以直接在索引中查找,使得查找速度能提高几个数量级。在索引中找到条目以后,就可以直接跳转到目标文档的位置。
• 创建普通索引,使用命令 db.collection.ensureIndex({key:1})
• 查看关于索引的相关信息,使用命令db.collection.stats()
• 查看查询使用索引的情况,使用命令 db.collection.find({key:value}).explain()
• 删除索引,使用命令db.collection.dropIndex({key:1})
• 删除集合,也会将集合中的索引全部删除
• 创建唯一索引,使用命令 db.collection.ensureIndex({key:1},{unique:true})
• 查看关于索引的相关信息,使用命令db.collection.stats()
• 查看查询使用索引的情况,使用命令 db.collection.find({key:value}).explain()
• 删除索引,使用命令db.collection.dropIndex({key:1})
• 删除集合,也会将集合中的索引全部删除
=========================未完,持续更新中!!=================