01、windows安装

--下载mongodb数据库,点击安装。配置环境即可

02、基本使用:启动  退出

!!!!!!在此之前一定要配置环境变量
!!!!!!如果之前多次配置其他数据库,这里应该基本不变。尤其和redis配置安装一模一样
--启动mongodb服务:mongod --config 配置文件.conf--进入mongo shell命令:mongo即可--退出:exit

03、基本使用:创建和删除数据库

--pip install pymongo  安装将要用于连接mongdb的python模块--数据库操作:--db  直接查看当前所在数据库,默认在test数据库--show dbs / show databases  查看有哪些数据库--use db_name  选择数据库--注:这里查看数据库会发现没有test数据库,是因为show dbs查看的是磁盘上的数据库,test数据库是存在于内存中的--数据库插入:--use python  创建一个名为python的数据库,记住此时查看是看不到python数据库的。因为还没有往其中插入数据--db.python.insert({"key":"value"})  往数据库插入数据对 key : value--删除当前数据库:--db.dropDatabase()  此时当前数据库就会被删除,再次查询就不复存在了。但是此时如果使用db命令还是能够查到数据库名称,因为只是从磁盘中删去了,内存中仍然保留该数据库

04、mongo集合使用·

--查看集合--show collections  如果没有则显示为空,如果有则会显示当前正在使用的数据库--创建集合--db.createCollection(name, options)  # 创建集合--name: 集合名称--options: 集合属性,这里注意options属于字典的注释部分,即文档。没有引号包裹键值对--示例:--db.createCollection("nor_cum")  创建集合 nor_cum--db.createCollection("cap_col", {capped:true,size:10})--capped: 为false表示不设置上线;true表示设置上线--size:集合所占字节数,默认最小字节数为256;小于256个字节则自动设置为256字节;大于256以具体实际值为准;如果数据超过内存以后,后输入的数据会把前面输入数据的位置挤占走--查看创建的集合的capped属性--db.cap_col.isCapped()  默认为false,如果设置了则为设置值--集合nor_cum插入两组值:--db.nor_cum.insert({"name":"孙策", "title":"东吴小霸王", "age":19, "wife":"大乔", "num":1})-- db.nor_cum.insert({"name":"周瑜", "title":"大都督", "age":30, "wife":"小乔", "num":2})--查看集合nor_cum中的两条数据:--db.nor_cum.find()--清屏:cls / ctrl + l
--固定大小的日志可以用于日志记录的保存,后输入的日志会挤占前面输入的日志,正好满足我们对于日志时间冗余的要求。

05、mongo数据类型

--mongodb数据库常见数据类型如下所示:- Object ID: 文档ID/数据的ID,数据的主键- String: 字符串,最常用,必须是有效的UTF-8- Boolean: 存储一个布尔值,true或false- Integer: 整数可以是32位或64位,这取决于服务器- Double: 浮点数- Arrays: 数组/列表- Object: mongodb中的一条数据/文档,即文档嵌套文档- Null: 存储null值- Timestamp: 时间戳,表示从1970-1-1到现在的总秒数- Date: 存储当前日期或时间的UNIX时间格式--关于objectID的说明:--每个文档都有一个属性,为_id,保证每个文档的唯一性,mongodb默认使用_id作为主键--可以手动设置_id的值,如果没有提供,那么MongoDB为每个文档提供了一个独特的_id, 类型为objectID--objectID是一个12字节的十六进制数,每个字节两位,一共是24位的字符串:--这里 1个字节 <==> 2位数据--前4个字节为当前时间戳--接下来3个字节的机器ID--接下来的2个字节中MongoDB的服务进程id--最后3个字节是简单的增量值

06、mongodb的数据插入:单条 和 批量插入

--单条数据插入:--db.nor_cum.insert({"name":"yang", "age":39, "class":1, "num":1})--db.nor_cum.insert({"name":"sun", "age":18, "class":2, "num":2})--批量插入数据:使用列表包裹字典的形式批量插入数据--db.nor_cum.insert([{"name":"yang", "age":39, "class":1, "num":1}, {"name":"sun", "age":18, "class":2, "num":2}])--插文档时,如果不指定_id参数,MongoDB会为文档自动分配一个唯一的ObjectId  --db.stu.insert({_id:"20170101", name:'gj', gender:1})--插入时不建议指定id,最好由系统指定

07、monggo中集合的数据保存:save

--命令:db.集合名称.save(document)--举例:db.stu.save({_id:'20170101', name:'gj', gender:2})--这里如果按照_id寻找的话,找到一样的就更新;找不到就插入。即,save兼具更新和插入的功效--更新【modified】:WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })db.stu.save({name:'gj', gender:2})db.stu.find()

08、mongo查询find:

--测试数据:
db.stu.insert([{"name" : "郭靖", "hometown" : "蒙古", "age" : 20, "gender" : true },
{"name" : "黄蓉", "hometown" : "桃花岛", "age" : 18, "gender" : false },
{"name" : "华筝", "hometown" : "蒙古", "age" : 18, "gender" : false },
{"name" : "黄药师", "hometown" : "桃花岛", "age" : 40, "gender" : true },
{"name" : "段誉", "hometown" : "大理", "age" : 16, "gender" : true },
{"name" : "段王爷", "hometown" : "大理", "age" : 45, "gender" : true },
{"name" : "洪七公", "hometown" : "华筝", "age" : 18, "gender" : true }])--虽简单的查询:db.集合名.find()  这种方式查询出来的是集合中的所有数据,不加参数- 方法find(): 查询`db.集合名称.find({条件文档})`- 方法findOne():查询,只返回第一个`db.集合名称.findOne({条件文档})`- 方法pretty(): 将结果格式化;不能和findOne()一起使用!`db.集合名称.find({条件文档}).pretty()`
--查询中的比较运算符
- 等于: 默认是等于判断, 没有运算符
- 小于:`$lt (less than)`
- 小于等于:`$lte (less than equal)`
- 大于:`$gt (greater than)`
- 大于等于:`$gte`
- 不等于:`$ne`--示例:--查询年龄大于18的所有学生--db.stu.find({age:{$gte:18}})--查询年龄等于18的人员--db.stu.find({age:18})
--逻辑运算符:--and:在json中写多个条件即可示例如下:--查询年龄大于或等于18, 并且性别为true的学生--db.stu.find({age:{$gte:18},gender:true})--or:使用$or, 值为数组, 数组中每个元素为json示例如下:--查询年龄大于18, 或性别为false的学生--db.stu.find({$or:[{age:{$gt:18}},{gender:false}]})--查询年龄大于18或性别为男生, 并且姓名是郭靖--db.stu.find({$or:[{age:{$gte:18}},{gender:true}],name:'gj'})
--范围运算符:--使用`$in`, `$nin` 判断数据是否在某个数组内代码示例:--查询年龄为18、 28的学生--db.stu.find({age:{$in:[18,28,38]}})--查找家乡为蒙古 大理的数据--db.stu.find({"hometown":{$in:["蒙古", "大理"]}})--查找加像不为蒙古 大理的数据--db.stu.find({"hometown":{$nin:["蒙古", "大理"]}})
--正则表达式:--使用$regex编写正则表达式--代码示例:--查询name以'黄'开头的数据--db.stu.find({name:{$regex:'^黄'}})
--自己编写函数过滤数据--mongo shell 是一个js的执行环境--使用$where 写一个函数, 返回满足条件的数据代码示例:--查询年龄大于30的学生:--db.stu.find({$where:function() {return this.age>30;}})    

09、mongo查询结果的操作 -- 区别于08查询操作本身

--limit限制查询数量:db.stu.find().limit(1)  这里限制数量为1--skip:表示略过前多少个数据db.stu.find().skip(1)  略过第一个数据不返回# 实现分页效果 -- 组合使用limit 和 skip
# 这里将查询结果分页,一页3条数据
# 这里skip 和 limit互换位置不影响,因为limit优先级低于skip--db.stu.find().skip(0).limit(3)--db.stu.find().skip(3).limit(3)--db.stu.find().skip(6).limit(3)--db.stu.find().skip(9).limit(3)
--投影:其实就是查出数据指定展示某些字段--查出数据,选择展示 name 和 age两个字段--db.stu.find({}, {"name":1, "age":1})--这种选择性展示:不能设置1的同时再设置0--db.stu.find({}, {"name":1, "age":0})--这种选择性展示可以选择展示1 或者 选择不展示0--db.stu.find({}, {"name":1, "age":1})--db.stu.find({}, {"name":0, "age":0})--_id属于独特的一个字段,可以随意设置0 或 1,可以和其他字段选择性展示在一起--db.stu.find({}, {"_id":0, "name":1, "age":1})
--排序:sort 用于对查询结果按照指定的字段进行排序--命令:`db.集合名称.find().sort({字段:1,...})`--参数1为升序排列--参数-1为降序排列--代码示例如下:    --根据性别降序, 再根据年龄升序--db.stu.find().sort({gender:-1,age:1})
--统计个数:方法count()用于统计结果集中文档条数命令:`db.集合名称.find({条件}).count()`命令:`db.集合名称.count({条件})`--示例如下:--db.stu.find({gender:true}).count()--db.stu.count({age:{$gt:20},gender:true})
--去重:db.集合名.distinct("字段名")--示例代码:--db.stu.distinct("hometown")--[ "蒙古", "桃花岛", "大理", "华筝" ]--db.stu.distinct("hometown", {age:18})--查出18岁的员工并去重

mongodb数据库使用01、基础查询和数据类型介绍相关推荐

  1. python操作MongoDB数据库(1)查询

    对于用爬虫爬取下来存储到MongoDB数据库中的数据,为了使用这些数据,我们应该得知道一些python对于MongoDB的一些操作.本文只涉及操作,对于数据库的安装和启动暂不涉及.本文参考了他的文章 ...

  2. mongodb数据库显示obj_MongoDB基础(三)—基本操作及管理 | leon的博客

    第1章 MongoDB的基本操作 1.1 查询帮助信息 > help db.help()                    help on db methods db.mycoll.help ...

  3. SpringBoot整合MongoDB数据库并实现基础CRUD

    MongoDB安装教程:MongoDB数据库安装以及将MongoDB设置为系统服务 MongoDB简介 MongoDB是一个基于分布式文件存储的数据库,由C++语言编写.旨为WEB应用提供可扩展的高性 ...

  4. mysql数据库邮箱什么类型_MySQL的数据类型介绍

    MySQL的数据类型介绍 发布时间:2020-06-01 20:57:09 来源:亿速云 阅读:154 作者:鸽子 由于Mysql独有的特性和实现细节对性能的影响是很明显的,因为做好Mysql数据库的 ...

  5. mongo go 查询指定字段_Go语言 操作MongoDB数据库批量查询

    数据操作是编程中避免不了的操作,这也就牵扯到了数据库的增删改查,而实际工作中我们最常用到的是增改查.今天要介绍的是Go 语言查询MongoDB数据库. 操作mongodb使用的包是"http ...

  6. mongodb 搜索速度_初识 MongoDB 数据库

    初识 MongoDB 数据库 前言 Flask 基础框架在之前的三篇文章中写完了.想要学习 web 相关的同学可以自己回顾翻一下,相信看完了,你也可以写出来一个简单的小案例来炫耀一波! 说到 web ...

  7. MongoDB数据库操作---终端操作

    初识MongoDB 概念: 特点 相关安装 我这边用的是MAC版本 在使用mongodb之前,我们需要给它配置一个macOS缺失的软件包管理器,叫做HomeBrew,链接是:HomeBrew 对应的, ...

  8. 墨者学院刷题笔记——SQL手工注入漏洞测试(MongoDB数据库)

    今天继续给大家介绍Linux运维相关知识,本文主要内容是SQL手工注入漏洞测试(MongoDB数据库). 一.题目简介 我们这里采用墨者学院的MongoDB数据库渗透测试题目,其地址为:https:/ ...

  9. SpringBoot2.0 基础案例(15):配置MongoDB数据库,实现增删改查逻辑

    本文源码 GitHub地址:知了一笑 https://github.com/cicadasmile/spring-boot-base 一.NoSQL简介 1.NoSQL 概念 NoSQL( Not O ...

最新文章

  1. 逻辑模型三要素-数据结构
  2. 关于小程序授权地理位置(wx.getLocation + 用户体验)
  3. java 布隆过滤器_什么是布隆过滤器(Bloom Filter)?
  4. 分别标记区段的 飞鸽传书 左、右端
  5. iOS 权限判断 跳转对应设置界面
  6. java development kie_java – 直接从存储库加载Drools/KIE Workbench工件
  7. Android学习笔记----SQLiteDatabase 自带添加、删除、更新、查询的操作方法:实现添加,删除,更新,查询,和分页,统计
  8. MongoDB独特查询
  9. 我的第一个Java程序和Java简介
  10. SpringBoot+Thymeleaf+ECharts实现大数据可视化(基础篇)
  11. AB1562_UT软件分辨真假洛达1562A,洛达1562a怎么鉴别?
  12. 三星手机GT-S7898连不上电脑,无法调试
  13. Apache 服务器特点
  14. sftp访问提示Connection closed
  15. 《富爸爸穷爸爸》第一课
  16. Linux Base VIII 压缩和解压缩命令
  17. 京训钉怎么快速看完_在钉钉用培训机构CRM管理系统,助力协同办公一体化
  18. Vulnhub 靶机 VulnOSv2 write up opendocman cms 32075 sql注入 账号密码 ssh连接 37292.c 脏牛提权
  19. ERP工程师做什么?
  20. extjs 引入html页面,Extjs嵌入html

热门文章

  1. 【自动驾驶轨迹预测】一文熟悉自动驾驶轨迹预测发展现状!
  2. 开发一款智能血压计PCBA方案
  3. curl模拟form表单提交
  4. html中form表单提交和阻止表单提交的细节
  5. JVM(Java虚拟机)详解(JVM 内存模型、堆、GC、直接内存、性能调优)
  6. 递归Java_Java递归算法经典实例
  7. idea local history的使用
  8. 三体人有救了!深度学习解决三体难题
  9. 软件构造—ADT的理解
  10. 【目标检测】目标检测界的扛把子YOLOv5(原理详解+修炼指南)