MongoDB

本文详细介绍MongoDB的安装配置、基本命令、数据库与集合管理、数据操作、索引与聚合等核心内容,助您快速掌握文档型数据库的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 MongoDB的安装与环境配置

mongoDB是一个文档型数据库,存储的是key:value ,类似json数据 。分布式 、高性能的数据库。

  1. 去官网下载MongoDB安装包,解压后配置环境变量;
  2. 去找安装好的你的mongodb目录里面bin文件,把路径配置到系统环境变量path上;
  3. 最后启动mongodb服务器 :在cmd里面输入mongo ,回车 就进入mongodb数据库了 ;
  4. 最后重新打开一个cmd,输入mongo就与MongoDB数据库连接了;注意:第一个cmd不可以关闭

二 命令

  1. mongoDB怎样创建数据库
 use  chat  ;

会去检测chat数据库是否存在 。若不存在 : 创建+定位 ;存在直接定位;
2. 查看里面的所有数据库

show dbs;

显示所有的数据库 ,但是里面可能不存在你创建的数据库,原因是你的数据库里面什么数据都没有。要想显示创建的数据库 , 得向数据库添加数据:

db.chat.insert({"name":"张三"});
show dbs;  //显示你创建的数据库
  1. 删除数据库
 db.dropDatabase();

删完之后会显示: ok:1;
4. 创建集合:collection。 集合类似mysql的表 只不过存储的是文档json。

db.createCollection(name,options);

name :创建的集合名称 ; options:设置当前集合的相关属性 , 可选;
5. 删除集合

db.collection.drop();  //db.user.drop();  true  删除成功
  1. 显示集合
show collections;
  1. 插入文档
 db.user.insert({name:"",sex:"",age:""});

eg:

 db.user.insert({name:"张三",age:20,sex:"男",hobby:["篮球","足球","羽毛球"],address:"西安市"});
  1. 插入文档的时候可以把数据定义为变量
txt=({name:"李四",age:19,sex:"男"});
db.user.insert(txt);
  1. 查找数据
 db.collection.find();   // 查找当前集合的所有数据
  1. 更新文档
    参数1:条件, 参数2 :更新字段,使用关键字:$set
db.user.update({name:"张三"},{$set:{age:29}});

==备注: 修改默认修改第一条,可选参数multi 默认是false ==
修改找到的多条数据

db.user.update({name:"毛豆"},{$set:{age:20}},{multi:true});

这样就可以把找到的多条,姓名+ 年龄修改;
修改的时候找不到修改的数据,可选参数 : upsert 默认是false 不插入 , true插入:

 db.user.update({name:"王五"},{$set:{age:20,sex:"女"}},{upsert:true,multi:false});
  1. 文档替换: save()
db.user.save({});  

里面的数据_id和要替换的数据_id一致
12. 删除文档

 db.user.remove(); // 不写条件是所有的数据删除
 db.user.remove({name:"毛豆"});

官方推荐

db.user.deleteOne({});  //条件  删除一条
db.user.deleteMany({})  //条件  删除多条  不写条件是全部删除
  1. 文档条件式查找
    gt 、 gte、 lt、 lte、 ne:大于、大于等于、小于、小于等于、不等于;
db.user.find({age:18});
db.user.find({age:{$lt:20}});
db.user.find({age:{$lte:20}});
db.user.find({age:{$gt:20}});
db.user.find({age:{$gte:20}});
db.user.find({age:{$ne:20}});

and条件查找

 db.user.find({name:"毛豆",age:{$lt:20}});

or条件查找

db.user.find({$or:[{name:"毛豆"},{name:"张三"}]});

and和or连用

 db.user.update({age:{$lte:20}},{$set:{name:"张三"}});

修改文档找到多条数据 ,默认修改第一条 设置 multi:true 全部修改;
14. $type 操作符 :根据类型过滤数据

db.user.find({name:{$type:"object"}});
  1. limit 、skip 方法
    limit: 读取多少条数据 ;
    skip: 跳到某个位置;
    数据分页
 db.user.find().skip(0).limit(3);
  1. 模糊查找 /
db.user.find({name:/张/});
  1. 排序: sort() 1 正序 -1 倒序
db.user.find().sort({age:1});  // 正序
db.user.find().sort({age:-1}); // 倒序
  1. mongodb实现自动增长 ,建立一个辅助的集合实现增长
 db.createCollection("count");

给count集合添加数据

 db.count.insert({_id:"proId",autonum:0});

建立函数 操作count集合里面autonum字段自增
$inc 关键字 实现自增自减操作的

 function getNext(idName){
   var obj=db.count.findAndModify(
   {
      query:{_id:idName},
      update:{$inc:{autonum:1}},
      "new":true
   });
   return obj.autonum;
   };
    
   //某个表里面实现_id 自增
   db.msg.insert({_id:getNext("proId"),name:"张三"});
  1. 索引的作用是 :提高查询的效率
db.user.createIndex({name:1})   //这里的正负1  代表正序和倒序
db.user.ensureIndex({name:1}) // 这个创建索引也行

获取集合里面的索引

 db.user.getIndexes();

删除索引

 db.user.dropIndex({name:1});

检测查询语句的执行速度

db.user.find({name:"李四"}).explain("executionStats");

创建复合索引 ,查询效率更高

db.user.createIndex({name:1,sex:1});
  1. 聚合
    聚合表达式:$sum 总和 $avg 平均数 $min $max
    aggregate 类似 count(*)
db.user.aggregate([{$group:{_id:"$name",num:{$sum:1}}}]);

管道:
$project 过滤字段

  db.user.aggregate({
   $project:{name:1,_id:0}	
   })

只输出user集合 name字段

$match  用于过滤数据的
$limit  返回几条数据
$skip   跳到文档的某个位置
$group  按照那个字段分组  分组的时候要使用聚合表达式
$sort   文档输出排序
//分开使用
db.user.aggregate([
    {$project:{name:1,_id:0,sex:1,age:1}},
    {$match:{age:{$lte:25,$gte:20}}},
    {$sort:{age:1}},
    {$group:{_id:"$name",avgage:{$avg:"$age"}}},
    {$skip:3},
    {$limit:3}
   ]);
资源下载链接为: https://pan.quark.cn/s/f989b9092fc5 今天给大家分享一个关于C#自定义字符串替换方法的实例,希望能对大家有所帮助。具体介绍如下: 之前我遇到了一个算法题,题目要求将一个字符串中的某些片段替换为指定的新字符串片段。例如,对于源字符串“abcdeabcdfbcdefg”,需要将其中的“cde”替换为“12345”,最终得到的结果字符串是“ab12345abcdfb12345fg”,即从“abcdeabcdfbcdefg”变为“ab12345abcdfb12345fg”。 经过分析,我发现不能直接使用C#自带的string.Replace方法来实现这个功能。于是,我决定自定义一个方法来完成这个任务。这个方法的参数包括:原始字符串originalString、需要被替换的字符串片段strToBeReplaced以及用于替换的新字符串片段newString。 在实现过程中,我首先遍历原始字符串,查找需要被替换的字符串片段strToBeReplaced出现的位置。找到后,就将其替换为新字符串片段newString。需要注意的是,在替换过程中,要确保替换操作不会影响后续的查找和替换,避免遗漏或重复替换的情况发生。 以下是实现代码的大概逻辑: 初始化一个空的字符串result,用于存储最终替换后的结果。 使用IndexOf方法在原始字符串中查找strToBeReplaced的位置。 如果找到了,就将originalString中从开头到strToBeReplaced出现位置之前的部分,以及newString拼接到result中,然后将originalString的查找范围更新为strToBeReplaced之后的部分。 如果没有找到,就直接将剩余的originalString拼接到result中。 重复上述步骤,直到originalStr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值