MongoDB基本命令:
查询运算符
修改运算符:(因为不适用修改器,新数据会覆盖(替换)源数据:
show dbs show databases 查询所有数据库
db.dropDatabase() 删除数据库
db.stats() 显示当前数据库的状态
db.version() 当前数据库的版本信息
show collections 查询所有集合(类似于关系数据库中的表)
db.createCollection(" name ") 创建集合 name:集合名称
db.foo.drop() 删除集合
show users 查询当前数据库的用户信息
use 数据库名称 切换数据库(隐式创建数据库)
db db.getName() 查询当前所在数据库
db.help() 查询数据库操作命令
db.foo.help() 查询集合的操作命令
db.foo.find() (由于没有查询条件)查询集合中所有数据
db.foo.find(uid:1) 查询foo表中 uid为1的 文档(行)
db.foo.find(uid:{"$gt":10}) 查询foo表 uid>10 的所有数据 $lt 小于
db.foo.find(uid:1,name:"张三") 查询 uid=1 and name=“张三” 的数据
db.foo.find({"$or" : [ {"id":1} , {id : { "$lt":20 } } ] }) 查询id=1 或者id<20 的数据
db.foo.update({id:1}, { 新数据 }) 更新id为1的 数据
db.StudentInfo.update( {name:"李四"} , { "$set" : {age:35} } ) 修改name为李四的 年龄为35
db.foo.remove() 删除foo表中所有数据
db.foo.remove({ 和find查询条件一样 }) 删除满足条件的数据
db.foo.insert({ json }) 插入数据
<!--插入多条数据-->
db.foo.insert([
{------},
{------},
{------}
])
MongoDB底层是由JS引擎实现的,所以支持部分JS代码
即可以使用for循环来实现多条数据的插入。
查询部分列:
db.foo.find( { 约束条件 } , { 显示列 } ) ; name:0 除name属性外都显示 name:1只显示name属性值
db.StudentInfo.find ( { age : { $lt : 20 } } ) 查询年龄小于20岁的学生信息
db.StudentInfo.find({age: { $in : [15,25,35] } } ) 查询年龄是15,25,35,的学生信息
db.StudentInfo.find( { age:{$lt:20} , name:“吴庆友” } ) 查询年龄小于20岁 并且姓名为吴庆友的学生信息
db.StudentInfo.find({$or:[{ age:{$lt:20} },{ name:"李四" }]})
补充:
db.foo.save({ _id, ..... });
//把_id为***的文档修改为...... (覆盖)
db.StudentInfo.save({ "_id" : ObjectId("5f9bd08d86a2ee1b804a559d"),name:"张小三",sex:"男",age:25,adress:"山东省菏泽市",email:"12333222@qq,com",ClassInfo:{id:"301",className:"软件一班",pCount:35} })
db.foo.deleteOne( {} );//删除符合条件的一条数据 (官方推荐)
db.foo.deleteMany( {} );//(无条件)删除所有数据 (有条件)删除所有符合条件的数据
db.foo.findOne( {} );//查出符合条件的第一条数据
//模糊查询 正则
db.foo.find( { name: / 王者 / } );//名称 包含“王者”的 所有数据
db.foo.find( { name: /^张/ } );//名称 以“张” 开头
db.foo.find( { name: /三$/ } );//名称以 “三” 结尾
//$and 操作 $or
db.foo.find({$and:[ {name:"张三"} , {age:{$lt:20}} ]});//查询名称为“张三”,年龄小于20的所有数据
db.foo.find( { name:"张三",age:{$lt:20} } );//等同于上面的效果
db.foo.find( {$or:[ {name:"Zs"},{age:{$gt:30}} ]});//查询所有姓名为Zs或者年龄大于30的数据
//$type 应用 查询 某列 数据类型为**的所有数据
db.StudentInfo.find({age:{$type:"string"}})
//分页查询 limit函数 和 skip函数
db.foo.find({}).skip(5);//从结果集中过滤5条数据
db.foo.find({}).limit(4);//从结果集中取4条数据
db.foo.find({}).skip(5).limit(5);//跳过5条数据 取5条数据
//排序
db.foo.find({}).sort({age:1});//根据age 年龄 升序排序
db.foo.find({}).sort({age:-1});根据age 年龄 降序排序
创建索引:
db.foo.createIndex({ age:1 }, { background: true })
第一个参数 根据age 按照升序规则创建索引 -1按照降序规则排列
第二个参数[可选参数] 具体如下:
查看索引:
db.foo.getIndexes()
db.foo.getIndexSpecs()
db,foo.getIndexKeys() 获取各个索引的键值
db.foo.totalIndexSize() 获取索引占据的总大小
db.foo.totalIndexSize([0]) 获取第1个索引所占据的大小
删除索引:
db.foo.dropIndex( “index_name” ) 删除指定索引
db.dropIndexes() 删除全部
重建索引 恢复出厂 重新创建 <减少内存空间的占用,优化了索引查询的效率>
db.foo.reIndex()