当前位置: 首页 > news >正文

Mongodb基础操作

一、简介

        MongoDB是一个NoSQL型的数据库,基于分布式文档型储存数据库,由C++语言编写,它的特点是开源、高性能、高可用、高扩展、易部署。支持 Golang、RUBY、PYTHON、JAVA、C++、PHP等多种开发语言。

二、应用场景

        MongoDB适用于高并发读写、数据量大、高可扩展性和高可用性且对事务要求不高的场景,常用的应用场景有以下:

        1. 社交应用:可以使用MongoDB来存储用户信息和朋友圈动态,实现附近的人等功能。

        2. 游戏:使用MongoDB来存储用户基础信息,以及游戏中的积分、等级以及装备等用户关联信息。

        3. 物流:使用MongoDB存储订单信息,以及物流轨迹信息。

        4. 物联网:使用MongoDB存储各设备信息,以及个设备的产生的日志信息,以便于对设备进行分析、维护和预警。

        5. 视频直播:使用MongoDB来吃存储用户信息,以及用户操作日志、点赞、收藏和评价。

三、基础操作

1、创建集合

集合的创建分为隐式创建和显式创建。

显式创建:db.createCollection(name)。

隐式创建:当向一个集合插入一个文档时,如果集合不存在则会自动创建集合。

2、插入操作:

insert插入:插入单个数据。

db.user.insert({name:"张三",age:19,sex:1}) 

        
  insertMany插入:插入多条数据。

 db.user.insertMany([{name:"李四",age:24,sex:1},{name:"王五",age:20,sex:0}])

3、查询操作:

查询操作使用find()或findOne()进行查询,其中findOne()只查询出一条数据。

find查询

         db.user.find({age:20},{_id:0,age:1,name:1});

         // 等同于:select age,name from user where age=20;

                   

比较查询 

操作操作符查询格式
小于$lt{age:{$lt:18}}   // where age<18
小于等于$lte{age:{$lte:18}}   // where age<=18
大于$gt{age:{$gt:18}}   // where age>18
大于等于$gte{age:{$gte:18}}   // where age>=18
不等于$ne{age:{$ne:18}}   // where age<>18

db.user.find({age:{$lt:30}})

//等同于 select * from user where age<30; 

逻辑查询

and查询

db.user.find({$and:[{age:20},{sex:0}]});

// 等同于 select * from user where age=20 and sex=0

或者缺省$and

db.user.find({age:20,sex:0})      

or查询

 db.user.find({$or:[{age:{$lt:24}},{sex:1}]});

//等同于 select * from user where age<24 or sex=1

混合查询  

db.user.find({$or:

        [{sex:1},

         {$and:

                [{age:20},{sex:0}]

         }]});

//等同于 select * from user where sex=1 or(age=20 and sex=0)

 in 和nin 查询

db.user.find({age:{$in:[18,19,20]}})

//等同于 select * from user where age in (18,19,20)

db.user.find({age:{$nin:[18,19,20]}})

//等同于 select * from user where age not in (18,19,20)

 为空查询

db.user.find({name:{$exists:1}});

//等同于 select * from user where name is not null;

 分页查询

db.user.find().skip(2).limit(2).sort({age:1});

//等同于 select * from user order by age asc limit 2,2;

分组查询

使用聚合方法aggregate()。

db.user.aggregate([{$group:{_id:"$sex",min_age:{$min:"$age"}}}]);

//等同于 select sex,min($age) from user group by sex; //获取男女中最小年龄

 db.user.aggregate([{$group:{_id:"$sex",sex_total:{$sum:1}}}]);

//等同于 select sex,count(1) from user group by sex;// 统计男女的个数

其他聚合操作

操作 描述示例
$avg计算平均值。db.user.aggregate([{$group:{_id:"$sex",avg_age:{$avg:"$age"}}}])
$max求最大值。db.user.aggregate([{$group:{_id:"$sex",min_age:{$max:"$age"}}}])
$push将值加入一个数组中,不判断重复。db.user.aggregate([{$group:{_id:"$sex",name:{$push:"$name"}}}])
$addToSet将值加入一个数组中,会判断是重复,若重复则不加入。db.user.aggregate([{$group:{_id:"$sex",name:{$addToSet:"$name"}}}])
$first获取第一个文档数据db.user.aggregate([{$group:{_id:"$sex",first_name:{$first:"$name"}}}])
$last获取最后一个文档数据db.user.aggregate([{$group:{_id:"$sex",last_name:{$last:"$name"}}}])

4、更新操作

db.user.update({查询条件},{更新操作},不存在时是否插入,是否多条,异常级别)。

db.user.update({name:"张三"},{$set:{age:40}}) // 将张三的年龄修改为40

db.user.update({name:"张三"},{$inc:{age:2}}) //将张三的年龄加2

5、删除操作

删除集合(此操作慎用)

db.user.drop();

删除文档

db.user.remove({查询条件})

四、索引

1. 创建索引

db.user.createIndex({age:1}) // 创建index_age 按升序排序

2. 查看索引

db.user.getIndexes()

3. 查看索引大小

db.user.totalIndexSize()

4. 删除索引

db.user.dropIndex(索引名);

db.user.dropIndexes();//删除集合所有索引
 

总结:

        本文主要介绍了MongoDB的常用的基础操作,操作方式主要使用的是json类型的条件语句,对json编写的要求较高,其操作和MySQL的操作基本相同,除了MongoDB没有join查询以外其他查询都支持,后续会给大家分享MongoDB的安装和主从复制等内容。

http://www.lryc.cn/news/134566.html

相关文章:

  • 数据结构与算法:计算机科学的基石
  • 曲线救国 | 双非渣硕的秋招路
  • 气传导耳机怎么样?四款值得入手的气传导耳机推荐
  • HTML <svg> 标签
  • Python随机密码生成。编写程序,在26个字母大小写和10个数字随机生成10个8位密码。
  • 数据结构作业——哈夫曼树
  • Python XML处理中级篇:深入探索lxml库
  • 岩棉革新——洛科威推出NGF新一代岩棉产品
  • 关于 docker 基础题目
  • Skywalking全链路追踪【学习笔记】
  • Sphinx——Python生成API文档
  • 倒计时动效
  • 安卓主板定制_电磁屏/电容屏安卓平板基于MTK联发科方案定制
  • Unity 之 ScreenPointToRay() (将点转换成射线的方法)
  • C++ 线程池
  • 测试框架pytest教程(6)钩子函数hook开发pytest插件
  • 【Rust】Rust学习 第十七章Rust 的面向对象特性
  • Redis系列(四):哨兵机制详解
  • 一个滚动框高度动态计算解决方案
  • Android瀑布流
  • Ubuntu搭建CT_ICP里程计的环境暨CT-ICP部署
  • 微信小程序全局事件订阅eventBus
  • 华为云cce发布若依前后分离版:2.nginx镜像操作
  • TCP协议报文结构
  • Day14-2-NodeJS后端开发流程
  • 计算机竞赛 基于CNN实现谣言检测 - python 深度学习 机器学习
  • 框架(Git基础详解及Git在idea中集成步骤)
  • 0基础学习VR全景平台篇 第88篇:智慧眼-成员管理
  • DSO 系列文章(2)——DSO点帧管理策略
  • 无需公网IP——搭建web站点