首页 > 其他分享 >mongdb基本概念介绍

mongdb基本概念介绍

时间:2023-02-04 18:12:58浏览次数:37  
标签:tel name students db 介绍 文档 stuid 基本概念 mongdb

我们通过与关系型数据库的比较来说明MongoDB中的一些概念。

SQL    MongoDB
database    database
table(表)    collection(集合)
row(行)    document(文档)
column(列)    field(字段)
index    index
table joins(表连接)    (嵌套文档)
primary key    primary key
通过Shell操作MongoDB
启动命令行工具,进入交互式环境。

mongo
说明:

查看、创建和删除数据库。

> // 显示所有数据库
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
> // 创建并切换到school数据库
> use school
switched to db school
> // 删除当前数据库
> db.dropDatabase()
{ "ok" : 1 }
创建、删除和查看集合。

> // 创建并切换到school数据库
> use school
switched to db school
> // 创建colleges集合
> db.createCollection('colleges')
{ "ok" : 1 }
> // 创建students集合
> db.createCollection('students')
{ "ok" : 1 }
> // 查看所有集合
> show collections
colleges
students
> // 删除colleges集合
> db.colleges.drop()
true
说明:在MongoDB中插入文档时如果集合不存在会自动创建集合,所以也可以按照下面的方式通过插入文档来创建集合。

文档的CRUD操作。

> // 向students集合插入文档
> db.students.insert({stuid: 1001, name: '骆昊', age: 40})
WriteResult({ "nInserted" : 1 })
> // 向students集合插入文档
> db.students.save({stuid: 1002, name: '王大锤', tel: '13012345678', gender: '男'})
WriteResult({ "nInserted" : 1 })
> // 查看所有文档
> db.students.find()
{ "_id" : ObjectId("5b13c72e006ad854460ee70b"), "stuid" : 1001, "name" : "骆昊", "age" : 38 }
{ "_id" : ObjectId("5b13c790006ad854460ee70c"), "stuid" : 1002, "name" : "王大锤", "tel" : "13012345678", "gender" : "男" }
> // 更新stuid为1001的文档
> db.students.update({stuid: 1001}, {'$set': {tel: '13566778899', gender: '男'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> // 插入或更新stuid为1003的文档
> db.students.update({stuid: 1003}, {'$set': {name: '白元芳', tel: '13022223333', gender: '男'}},  upsert=true)
WriteResult({
        "nMatched" : 0,
        "nUpserted" : 1,
        "nModified" : 0,
        "_id" : ObjectId("5b13c92dd185894d7283efab")
})
> // 查询所有文档
> db.students.find().pretty()
{
        "_id" : ObjectId("5b13c72e006ad854460ee70b"),
        "stuid" : 1001,
        "name" : "骆昊",
        "age" : 38,
        "gender" : "男",
        "tel" : "13566778899"
}
{
        "_id" : ObjectId("5b13c790006ad854460ee70c"),
        "stuid" : 1002,
        "name" : "王大锤",
        "tel" : "13012345678",
        "gender" : "男"
}
{
        "_id" : ObjectId("5b13c92dd185894d7283efab"),
        "stuid" : 1003,
        "gender" : "男",
        "name" : "白元芳",
        "tel" : "13022223333"
}
> // 查询stuid大于1001的文档
> db.students.find({stuid: {'$gt': 1001}}).pretty()
{
        "_id" : ObjectId("5b13c790006ad854460ee70c"),
        "stuid" : 1002,
        "name" : "王大锤",
        "tel" : "13012345678",
        "gender" : "男"
}
{
        "_id" : ObjectId("5b13c92dd185894d7283efab"),
        "stuid" : 1003,
        "gender" : "男",
        "name" : "白元芳",
        "tel" : "13022223333"
}
> // 查询stuid大于1001的文档只显示name和tel字段
> db.students.find({stuid: {'$gt': 1001}}, {_id: 0, name: 1, tel: 1}).pretty()
{ "name" : "王大锤", "tel" : "13012345678" }
{ "name" : "白元芳", "tel" : "13022223333" }
> // 查询name为“骆昊”或者tel为“13022223333”的文档
> db.students.find({'$or': [{name: '骆昊'}, {tel: '13022223333'}]}, {_id: 0, name: 1, tel: 1}).pretty()
{ "name" : "骆昊", "tel" : "13566778899" }
{ "name" : "白元芳", "tel" : "13022223333" }
> // 查询学生文档跳过第1条文档只查1条文档
> db.students.find().skip(1).limit(1).pretty()
{
        "_id" : ObjectId("5b13c790006ad854460ee70c"),
        "stuid" : 1002,
        "name" : "王大锤",
        "tel" : "13012345678",
        "gender" : "男"
}
> // 对查询结果进行排序(1表示升序,-1表示降序)
> db.students.find({}, {_id: 0, stuid: 1, name: 1}).sort({stuid: -1})
{ "stuid" : 1003, "name" : "白元芳" }
{ "stuid" : 1002, "name" : "王大锤" }
{ "stuid" : 1001, "name" : "骆昊" }
> // 在指定的一个或多个字段上创建索引
> db.students.ensureIndex({name: 1})
{
        "createdCollectionAutomatically" : false,
        "numIndexesBefore" : 1,
        "numIndexesAfter" : 2,
        "ok" : 1
}
使用MongoDB可以非常方便的配置数据复制,通过冗余数据来实现数据的高可用以及灾难恢复,也可以通过数据分片来应对数据量迅速增长的需求。关于MongoDB更多的操作可以查阅官方文档 ,同时推荐大家阅读Kristina Chodorow写的[《MongoDB权威指南》](http://www.ituring.com.cn/book/1172)。

 

标签:tel,name,students,db,介绍,文档,stuid,基本概念,mongdb
From: https://www.cnblogs.com/kevin-yang123/p/17092069.html

相关文章

  • ATT&CK v10版本战术介绍执行(下篇)
    一、引言在上期文章中我们介绍了ATT&CK执行战术前6项技术内容,本期我们为大家介绍执行战术后7项技术内容,后续会陆续介绍ATT&CK其他战术内容,敬请关注。​二、ATT&CKv10简介MI......
  • ATT&CK v10版本战术介绍—持久化(一)
    一、引言在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问、执行战术知识,本期我们为大家介绍ATT&CK14项战术中持久化战术前6项技术,后续会陆续介绍持久化战术其他......
  • 反序列化类校验部分源码解析、断言、drf之请求、drf之响应、视图组件介绍及两个视图基
    反序列化类校验部分源码解析视图类中的ser.is_valid(),就会执行校验校验通过返回True不通过返回Flaseis_valid()入口:'''ser.is_valid()是序列化类的对象就假设序列化......
  • ![CDATA[]] 的基本介绍
    ![CDATA[]]的基本介绍被<![CDATA[]]>这个标记所包含的内容将表示为纯文本,比如<![CDATA[<]]>表示文本内容“<”。在xml中,”<”、”>”、”&”等字符是不能直接存入的,否......
  • dropout介绍+代码举例
    Dropout是一种在训练期间提高深度神经网络泛化能力的技术。在ConvolutionalNeuralNetworks(CNNs)中实现Dropout的方法如下:在卷积层或全连接层之间插入Dropout......
  • python基础:计算机五大组成部分详细介绍、计算机三大核心硬件、操作系统、编程与编程语
    目录一、计算机五大组成部分详细介绍1.控制器2.运算器3.存储设备4.输入设备5.输出设备二、计算机三大核心硬件1.cpu2.内存举例:写文档时,突然关机了。3.磁盘cpu为什么不和磁......
  • kafka管理工具eagle的介绍和详细安装教程
    简介kafkaeagle(kafka鹰)是一款由国内公司开源的Kafka集群监控系统,可以用来监视kafka集群的broker状态、Topic信息、IO、内存、consumer线程、偏移量等信息,并进行可视化图表......
  • kotlin中类初始化顺序介绍
    问题背景kotlin的类初始化过程,经常涉及到主构造函数、次构造函数、init函数,那么类初始化过程,他们的执行顺序是什么呢?问题分析首先,我们看下主构造函数、次构造函数、init......
  • 隆重介绍:Buddy全新Docker CLI操作
    自2013年推出以来,Docker一直是软件开发人员的福音。一个隔离独立的测试环境,一个在整个团队中共享工具和依赖项的独立运行时且快速与易用,有保证的Kubernetes可扩展性——所有......
  • 【Meta EnCodec源码分析】BitPacker功能介绍
    二进制流首先介绍一下二进制流。假如有下4个数值[47,19,38,53]首先每个数字对应的二进制分别如下十进制数值二进制数值470x00101111190x00010011380x00100110530......