此文章,我们拿MySQL和MongoDB做一个简单的理解。

MySQL的数据库    =》  MongoDB数据库

MySQL的表      =》  MongoDB的Collection

MySQL的一行记录   =》  MongoDB的Document

MySQL的字段     =》  MongoDB的Field

1、结构图大致如下:

2、开始一些常用语句的测试:

// 0.切换数据库,如不存在则创建之,并在插入第一条数据后可以查看到
use testdb;
// 查看当前mongoDB的所有数据库
show databases; // 1.查询集合中的所有数据(文档Document)
db.eda.find(); // 2.插入语句
// 2.1 插入一条数据,如果不指定_id,则会默认帮我们生成
db.eda.insert({_id:2,"addr":"深圳","date":"2019-12-18"}); // _id=2.0(double)
db.eda.insert({_id:"3","name":"lishimin","addr":"宝安","age":"19"}); // _id=3(string)
db.eda.insert({_id:"4","name":"CaiXukun","sex":"女","age":"3"}); // _id=4(string)
db.eda.insert({_id:NumberInt(7),"name":"caiyan","sex":"女","age":NumberInt(40)}); // _id=7(int)
// 注意:如果插入的数是一个Int数,需要用NumberInt指定;如果不指定,则数据变成25.0;
// 格式:NumberInt(数值)
db.eda.insert({_id:"6","name":"yiyangqianxi","age":NumberInt(19)}); //
db.eda.insert({_id:"5","name":"吴亦凡","age":25}); // 25.0 // 3.查询语句
// find():返回匹配的记录,不指定参数则为查询所有
// 3.1 精确查询,查询与之匹配的数据
db.eda.find({"name":"caihongwei"});
// 3.2 模糊查询,需要使用$regex指定匹配规则(例: /a/ <=> %a%),$regex的引号可要可不要
db.eda.find({"name":{"$regex":/h/}});
// 3.2.1 模糊查询所有name属性中带有c的Document
db.eda.find({"name":{"$regex":/c/}});
// 3.2.2 以上模糊查询可简写成
db.eda.find({"name":/c/});
// 3.3 模糊查询所有name属性中带有c的Document,其中,i 表示不区分大小写
db.eda.find({"name":{"$regex":/c/,"$options":"i"}});
// 3.3.1 以上查询可简写成
db.eda.find({"name":/c/i});
// 3.4 查询name域(字段)以c开头的,并且不区分大小写。^ :表示以什么开头 ;i :表示不区分大小写
db.eda.find({"name":/^c/i})
// 3.4.1 查询name域(字段)以i结尾的数据(Document)
db.eda.find({"name":/i$/})
// 3.5 条件判断查询,查询_id域(Field)不等于4的Document
db.eda.find({"_id":{$ne:"4"}});
// 补充:条件表达式还有如下几种:
/**
等于:直接匹配,例:"_id":"4"
不等于:$ne
大于>:$gt => Great Than
大于等于>=:$gte => Great Than Equals
小于<:$lt => Less Than
小于等于<=:$lte => Less Than Equals
**/
// 3.6 查询_id在以下列表中的数据["3","6"]
db.eda.find({"_id":{$in:["3","6"]}});
// 3.6.1 查询_id不在以下列表中的数据["3","6"]
db.eda.find({"_id":{$nin:["3","6"]}});
// 解读:
/**
$in : 和MySQL中的select xxx in(x,x,x) 类似
$nin : 和select xxx not in(x,x,x)
**/
// 3.7 关系查询:$or和$and的使用
// 3.7.1 查询性别为女并且($and)名字以c开头的Document(不区分大小写)
db.eda.find({$and:[{"sex":"女"},{"name":/^c/i}]});
// 3.7.2 查询性别为女的Document或者年龄小于20的Document
db.eda.find({$or:[{"sex":"女"},{"age":{$lt:20}}]}); // 4.findOne():查询一条记录,多个结果只返回第一条
db.eda.findOne();
// 4.1 也可以指定查询条件
db.eda.findOne({"name":/c/});
// 注意:findOne()个人感觉等价于limit(1),暂时没有发现其他不同,limit()的参数可用来指定返回的Document数目
db.eda.find().limit(2); // 5.修改语句
/**
命令格式:
db.collection.update(criteria,objNew,upsert,multi)
参数说明:
criteria:查询的条件,会依据查询条件来进行修改
objNew:更新的内容,如果不使用$set,则会造成数据替换 原来数据被替换成要修改的数据,这样不能修改某个字段(丢失字段)
upsert:默认fasle,如果不存在update的记录,是否插入objNew这个新的文档,true为插入。
multi:默认是false,只更新找到的第一条记录。如果为true,把按条件查询出来的记录全部更新。
**/
// 5.1 修改_id为6的Document的地址为"福田",如果不存在该字段,则新增该字段,只改变第一条
db.eda.update({"_id":"6"},{$set:{"addr":"福田"}});
// 5.2 修改name以c开头且不区分大小写,把其sex字段设置成男,并且改变所有查询结果
db.eda.update({"name":/^c/i},{$set:{"sex":"男"}},{multi:true}); // 6.删除语句
// 6.1 删除指定记录,删除_id为2.0的记录
db.eda.remove({"_id":2});
// 6.2 删除集合中的所有记录
db.eda.remove({}); // 6.2 删除所有记录 // ----常用函数----
// 1.日期函数(查看当前日期)
Date();
// 2.统计表中(集合中),数据(Document)的个数
db.eda.count();

至此,简单的测试完成!

MongoDB之源生基础概念与语句测试的更多相关文章

  1. MongoDB学习笔记-基础概念

    mongodb中基本的概念 文档.集合.数据库 与关系数据库的概念对比更容易理解

  2. MongoDB中的基础概念:Databases、Collections、Documents

    MongoDB以BSON格式的文档(Documents)形式存储.Databases中包含集合(Collections),集合(Collections)中存储文档(Documents). BSON是一 ...

  3. MongoDB入门系列(一):基础概念和安装

    概述 MongoDB是目前非常流行的一种非关系型数据库,作为入门系列的第一篇本篇文章主要介绍Mongdb的基础概念知识包括命名规则.数据类型.功能以及安装等. 环境: OS:Windows Versi ...

  4. 基于C#的MongoDB数据库开发应用(1)--MongoDB数据库的基础知识和使用

    在花了不少时间研究学习了MongoDB数据库的相关知识,以及利用C#对MongoDB数据库的封装.测试应用后,决定花一些时间来总结一下最近的研究心得,把这个数据库的应用单独作为一个系列来介绍,希望从各 ...

  5. JavaScript--我发现,原来你是这样的JS(基础概念--灵魂篇,一起来学js吧)

    介绍 这是红宝书(JavaScript高级程序设计 3版)的读书笔记第三篇(灵魂篇介绍),有着剩下的第三章的知识内容,当然其中还有我个人的理解.红宝书这本书可以说是难啃的,要看完不容易,挺厚的,要看懂 ...

  6. JS--我发现,原来你是这样的JS(三)(基础概念--灵魂篇)

    一.介绍 这是红宝书(JavaScript高级程序设计 3版)的读书笔记第三篇(灵魂篇介绍),有着剩下的第三章的知识内容. 红宝书这本书可以说是难啃的,要看完不容易,挺厚的,要看懂更不容易,要熟练js ...

  7. lua学习之基础概念篇

    基础概念 程序块 (chunk) 定义 lua 中的每一个源代码文件或在交互模式(Cmd)中输入的一行代码都称之为程序块 一个程序块就是一连串语句或者命令 lua 中连续的语句不需要分隔符,但为了可读 ...

  8. (数据科学学习手札102)Python+Dash快速web应用开发——基础概念篇

    本文示例代码与数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 这是我的新系列教程Python+Dash快 ...

  9. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

随机推荐

  1. 014_linux驱动之_信号符号名、描述和它们的信号值

    符号名 信号值 描述 是否符合POSIX SIGHUP 1 在控制终端上检测到挂断或控制线程死 亡 是 SIGINT 2 交互注意信号 是 SIGQUIT 3 交 互中止信号 是 SIGILL 4 检 ...

  2. Vue中用props给data赋初始值遇到的问题解决

    Vue中用props给data赋初始值遇到的问题解决 更新时间:2018年11月27日 10:09:14   作者:yuyongyu    我要评论   这篇文章主要介绍了Vue中用props给dat ...

  3. java上传文件夹

    我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用.此控件PC全平台支持包括mac,linux系统的文件上传,文章末尾将附上控件下载与教程链接 ...

  4. pat 甲级 1057 Stack(30) (树状数组+二分)

    1057 Stack (30 分) Stack is one of the most fundamental data structures, which is based on the princi ...

  5. CF917D Stranger Trees【矩阵树定理,高斯消元】

    题目链接:洛谷 题目大意:给定一个$n$个节点的树$T$,令$ans_k=\sum_{T'}[|T\cap T'|=k]$,即有$k$条边重合.输出$ans_0,ans_1,\ldots,ans_{n ...

  6. 关于Sign in with Apple 后台验证的一些记录

    2019年10月9号  IOS端新增Sign in with Apple IOS真是世界上最垃圾的语言,没有之一,苹果是世界上最垃圾的公司,没有之一 关于Sign in with Apple 苹果官方 ...

  7. Raspberry Pi 4B FTP服务器配置

    目录 1. 安装vsftpd并启动 2. 编辑配置文件 3. 重启服务 4. 测试 5. 为Web服务器添加管理员账户,便于通过ftp网站信息 参考资料:树莓派(raspberry pi)学习之安装f ...

  8. global 和 nonlocal关键字

    当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了. def fun(): global num1 num1=2 print("函数内修改后num1=&qu ...

  9. python中的匿名函数

    python 使用 lambda 来创建匿名函数. 所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数. lambda 只是一个表达式,函数体比 def 简单很多. lambda的主体是一 ...

  10. awk、grep、sed

    awk.grep.sed是linux操作文本的三大利器,也是必须掌握的linux命令之一.三者的功能都是处理文本,但侧重点各不相同,其中属awk功能最强大,但也最复杂.grep更适合单纯的查找或匹配文 ...