此文章,我们拿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. java-十五周作业

    题目1:编写一个应用程序,输入用户名和密码,访问test数据库中t_login表(字段包括id.username.password),验证登录是否成功. 题目2:在上一题基础上,当登录成功后,将t_u ...

  2. Codeforces Round #350 (Div. 2) A B C D1 D2 水题【D2 【二分+枚举】好题】

    A. Holidays 题意:一个星球 五天工作,两天休息.给你一个1e6的数字n,问你最少和最多休息几天.思路:我居然写成模拟题QAQ. #include<bits/stdc++.h> ...

  3. 路由器配置——基于链路的OSPF的MD5口令认证

    一.实验目的:掌握基于链路的OSPFMD5口令认证 二.拓扑图: 三.具体步骤配置: (1)R1路由器的配置 Router>enable Router#configure terminal En ...

  4. shell 获取指定ip的丢包率

    shell 获取指定ip的丢包率 丢包率大于10%就重新网络 使用sed 替换字符串 [[ $(ping -c 10 -W 1 baidu.com | awk '$6 ~ /%/{print $6}' ...

  5. 8月清北学堂培训 Day2

    今天是赵和旭老师的讲授~ 背包 dp 模型 背包 dp 一般是给出一些“物品”,每个物品具有一些价值参数和花费参数,要求 在满足花费限制下最大化价值或者方案数. 最简单几种类型以及模型: 0/1背包: ...

  6. 二十八、CentOS系统光盘安装、anaconda概述

    常见问题你会感觉 tftp timeout: 防火墙 time out script: 网关没有指定,在dhcpd.conf中 不能下载:vmlinuz和initrd程序和安装的系统版本不一致 内存必 ...

  7. B. Uniqueness(尺取)

    B. Uniqueness time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  8. AE开发之shp转txt

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  9. windows环境rabbitmq安装步骤

    windows环境rabbitmq安装步骤: 1 提前安装erl; 2 rabbitmq安装后自动启动; 3 从开始菜单进入rabbit命令窗,启用插件;   下面是命令: 启用插件 rabbitmq ...

  10. ios编译库文件时出现的问题

    1. 警告:directory not found for option "xxxxxxxx" 文件路径未找到 选择工程, 编译的 (targets) 选择 Build Setti ...