MongoDB基本命令及使用

今天我们来看一下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});

猜你喜欢

转载自blog.csdn.net/weixin_45345374/article/details/113175903