MongoDB基本命令及使用

提示这是我的个人IT资源网站

今天我们来看一下MongoDB的基本指令,大家可以在命令行中试一下,便于以后可以快速地使用
基本概念
数据库(database)
集合(collection)
文档(document)
在MongoDB中,数据库和集合都不需要手动创建,当我们创建文档时,如果文档所在的集合或数据库不存在会自动创建数据库和集合
当我们向集合中插入文档时,如果没有给文档指定_id属性,则数据库会自动为文档添加_id,该属性用来作为文档的唯一标识

  1. 显示当前的所有数据库
    show dbs 或 show databases
    
  2. 进入到指定的数据库中
    use 数据库名
    
  3. 查看当前所处数据库
    db
    
  4. 显示数据库中所有的集合
    show collections
    
  5. 向数据库中插入文档,insert可以插入单个或多个,insertOne只能插入单个,insertMany可以插入多个
    db.<collection>.insert(doc) 例子:db.stus.insert({name:"孙悟空",age:18,gender:"男"})
    db.<collection>.insertOne(doc) 例子:db.stus.insertOne({name:"猪八戒",age:28,gender:"男"});
    db.<collection>.insertMany([]) 例子:db.stus.insertMany([{name:"沙和尚",age:38,gender:"男"},{name:"白骨精",age:16,gender:"女"},{name:"蜘蛛精",age:14,gender:"女"}]);
    
  6. 查看当前集合的所有文档
    db.<collection>.find() 例子:db.stus.find()
    
  7. 生成一个UUID
    ObjectId()
    
  8. 根据条件查询文档,括号里面可以写一个键值对对象,代表查询的条件
    db.<collection>.find({})
    
  9. 查询集合中符合条件的第一个文档
    db.<collection>.findOne({})
    
  10. 查询文档的个数
    db.<collection>.find().count()
    
  11. 修改文档,以下update用法会完全替换文档,慎用,如果匹配到多个,默认只会修改第一个,如果想修改多个,则在后面加上配置{multi:true}
    db.<collection>.update({查询条件键值对对象},{替换键值对对象})  例子:db.stus.update({name:"沙和尚"},{age:18});
    
  12. 修改文档,指定属性
    db.<collection>.update({查询条件键值对对象},{$set:{指定替换的键值对对象}})
    
  13. 修改文档,删除属性
    db.<collection>.update({查询条件键值对对象},{$unset:{删除的键值对对象}})
    
  14. 只能修改一个文档,如果匹配到多个,默认只会修改第一个
    db.<collection>.updateOne({查询条件键值对对象},{$set:{指定替换的键值对对象}})
    
  15. 修改多个文档
    db.<collection>.updateMany({查询条件键值对对象},{$set:{指定替换的键值对对象}})
    
  16. 替换文档,如果匹配到多个,默认只会替换第一个
    db.<collection>.replaceOne({查询条件键值对对象},{替换键值对对象})
    
  17. 删除匹配到的文档
    db.<collection>.remove({查询条件键值对对象})
    db.<collection>.delectMany({查询条件键值对对象})
    
  18. 删除匹配到的第一个文档
    db.<collection>.remove({查询条件键值对对象},true)
    db.<collection>.delectOne({查询条件键值对对象})
    
  19. 清空集合,如果数据库中没集合了,那么数据库也会消失
    db.<collection>.remove({}) 性能较差,一个一个删除文档 db.<collection>.drop() 直接销毁集合
    

使用例子

//切换数据库
use my_test
//向users集合中插入一个用户名为孙悟空的文档
db.users.insert({
    username:"sunwukong"
});
//显示当前数据库
show dbs
//查询users集合内容
db.users.find();
//向users集合插入一个用户名为猪八戒的文档
db.users.insert({
    username:"zhubajie"
});
//查询users集合中文档的数量
db.users.find().count();
//查询users集合中用户名为孙悟空的文档
db.users.find({username:"sunwukong"});
//在users集合用户名为孙悟空的文档中添加地址为花果山
db.users.update({username:"sunwukong"},{$set:{address:"huaguoshan"}});
//将users集合用户名为猪八戒的文档的用户名替换为唐僧
db.users.replaceOne({username:"zhubajie"},{username:"tangseng"});
//将users集合用户名为孙悟空的文档中的地址移除
db.users.update({username:"sunwukong"},{$unset:{address:1}});
//在users集合用户名为孙悟空的文档增加爱好属性,爱好属性中又有城市和电影属性
db.users.update({username:"sunwukong"},{$set:{hobby:{cities:["beijing","shanghai","shenzhen"],movies:["sanguo","hero"]}}});
//在users集合用户名为唐僧的文档增加爱好属性,爱好属性中又有电影属性
db.users.update({username:"tangseng"},{$set:{hobby:{movies:["A Chinese Odyssey","King of comedy"]}}});
//查询users集合中属性hobby中属性电影值为hero的文档
db.users.find({'hobby.movies':"hero"});
//在users集合中用户名为唐僧的文档中的属性hobby中属性电影增加Interstellar值,允许值重复
db.users.update({username:"tangseng"},{$push:{"hobby.movies":"Interstellar"}});
//在users集合中用户名为唐僧的文档中的属性hobby中属性电影增加Interstellar值,不允许值重复
db.users.update({username:"tangseng"},{$addToSet:{"hobby.movies":"Interstellar"}});
//在users集合中删除属性hobby中属性城市为北京的文档
db.users.remove({"hobby.cities":"beijing"});
//删除users集合
db.users.remove({});
db.users.drop();
//向numbers中插入2000条数据
//效率慢
for(var i=1; i<=2000; i++){
    db.numbers.insert({num:i});
}
db.numbers.find();
use my_test
db.numbers.remove({});
//效率快
var arr = [];
for(var i=1; i<2000; i++){
    arr.push({num:i});
}
db.numbers.insert(arr);
//查询numbers中num为500的文档
db.numbers.find({num:500});
//查询numbers中num大于500的文档
db.numbers.find({num:{$gt:500}});
db.numbers.find({num:{$eq:500}});
//查询numbers中num小于30的文档
db.numbers.find({num:{$lt:30}});
//查询numbers中num大于40小于50的文档
db.numbers.find({num:{$gt:40,$lt:50}});
//查询numbers中num大于1995的文档
db.numbers.find({num:{$gt:1995}});
//查看numbers集合中前10条数据
db.numbers.find({num:{$lte:10}});
//limit()设置显示数据的上限
db.numbers.find().limit(10);
//跳过10条取10条skip((页码-1)*每页显示的条数).limit(每页显示的条数)
db.numbers.find().skip(10).limit(10);
//跳过20条取10条
db.numbers.find().skip(20).limit(10);
//查询工资小于2000的员工
db.emp.find({sal:{$lt:2000}});
//查询工资在1000-2000之间的员工
db.emp.find({sal:{$lt:2000,$gt:1000}});
//查询工资小于1000或大于2500的员工
db.emp.find({$or:[{sal:{$lt:1000}},{sal:{$gt:2500}}]});
//查询财务部的所有员工
var depno = db.dept.findOne({dname:"财务部"}).deptno;
db.emp.find({deptno:depno});
//为所有薪资低于1000的员工增加工资400元
db.emp.updateMany({sal:{$lte:1000}},{$inc:{sal:400}});
//查询文档时,默认情况是按照_id的值进行排序(升序)
//sort()可以用来指定文档的排序的规则,sort()需要传递一个对象来指定排序规则,1表示升序 -1表示降序,按顺序排序,相同则依次按之后的字段进行排序
db.emp.find({}).sort({sal:1,empno:-1});
//在查询时,可以在第二个参数的位置来设置查询结果的投影,1显示0隐藏
db.emp.find({},{ename:1,_id:0,sal:1});
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值