MongoDB基本概念、基本操作指令

本文探讨了关系型数据库的完整性约束,如实体完整性和参照完整性,以及NoSQL数据库如MongoDB的特点,重点讲解了MongoDB的文档模型、集合命名规则和基本操作,特别对比了两者在数据模型和约束上的区别。
摘要由CSDN通过智能技术生成

一、关系型数据库的完整性约束

1、实体完整性

实体完整性是通过设置主键实现的。主键不能为空并且值必须唯一。

2、参照完整性

参照完整性是通过主外键关联实现的。

3、域完整性

域完整性通过给列设置取值范围。

4、用户自定义完整性

用户自定义完整性用户根据具体需求定义的完整性约束条件。

二、NoSQL

       NoSQL,指的是非关系型的数据库。NoSQL 有时也称作 Not Only SQL 的缩写, 是对不同于传统的关系型数据库的数据库管理系统的统称。 NoSQL 用于超大规模数据的存储。(例如谷歌、Facebook 每天为他们的用户 收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以 横向扩展。

三、MongoDB

       MongoDB 是由 C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。

  • MongoDB 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

  • MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。

  • MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
    在这里插入图片描述

    3、基本概念:
    在这里插入图片描述

注意:MongoDB与关系型数据库的区别(特点):

MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型。

四、集合的命名规则

(1)不能含有空格
(2)不能以system.作为前缀,"system."是MongoDB的保留前缀
(3)不能含有保留字
(4).和$有特定含义,不要包含到集合名、文档名中

五 、数据类型

在这里插入图片描述在这里插入图片描述

六、MongoDB的基本操作

1、进入MongoDB的客户端

c:\mongo

2、显示所有数据库

show databases;show dbs;

3、切换数据库

use 数据库名; --> 若数据库存在则切换;若不存在则创建

4、显示数据库下的所有集合

show collections;

5、删除当前数据库

        (1)先切换到要删除的数据库中:use 数据库名

       (2)删除当前数据库:db.dropDatabase();

6、在数据库下创建集合

        (1)db.createCollection('集合名称');

        (2)在插入文档时自动创建集合:db.集合名.insert({key:value});

7、删除集合

db.集合名.drop();

8、查询集合中的文档:

       (1)查询所有:db.集合名.find();

       (2)以对象的方式显示所有文档:db.集合名.find().pretty()

       (3)条件查询:

           A、等于:{key:value},例如:db.users.find({'username':'贾宝玉'}).pretty();

           B、小于($lt):{<key>:{$lt:<value>}},例如:查询年龄小于20的记录:

db.users.find({'age':{$lt:20 }}).pretty();

           C、小于或等于($lte):{<key>:{$lte:<value>}

           D、大于($gt):{<key>:{$gt:<value>}}

           E、大于或等于($gte):{<key>:{$gte:<value>}}

           F、不等于($ne): {<key>:{$ne:<value>}}

           H、'and’关键字的使用:find()方法可以传入多个键(key),每个键(key)以逗号隔开,即常规SQL的AND条件。

例如:查询性别为女,地址是南京的文档

 db.employee.find({"sex":"女","address":"南京"}).pretty()

 db.employee.find({"$and":[{"sex":"女"},{"address":"南京"}]})

          I、'OR’关键字的使用:

db.集合名.find({
		    '$or':[
			   {key1:value1},
			   {key2:value2}
			]
		
		}).pretty()

          J、AND 和 OR 联合使用

db.employee.find({

   "age":{$gt:21},
   $or:[
	   {"sex":"女"},
	   {"address":"南京"}
    ]
	}).pretty()

           K、模糊查询:

a、查询name中包含'乔'字的文档
   
   db.employee.find({"name"://}).pretty()
  
b、查询name中以'周'字开头的文档

   db.employee.find({"name":/^周/}).pretty()	

c、查询name中以'乔'字结尾的文档		

   db.employee.find({"name":/乔$/}).pretty())	

9、插入文档

  • 插入多个文档:

(1)创建数组
(2)将数据放入数组中
(3)将数组插入到集合中

var arr = []
	for(var i=1;i<=10;i++){
		arr.push({"name":i})
	}
	db.mytest.insert(arr);	
	
db.employee.insertMany([
   {"name":"诸葛亮","age":28,"address":"卧龙岗"},
   {"name":"刘禅","age":26,"address":"成都"}])
   
  • 插入单个文档:
db.employee.insert({})	

10、更新文档

可以使用update()或save()方法进行更新 。

  db.集合名.update({
	     <更新条件>,
		 {
		    $set:{
			  key1:value1,
			  key2:value2
			}
		 },
		 multi: true //将所有满足条件的文档全部更新
	  })	

11、删除文档

 db.集合名.remove({条件},[justOne])

**注意:**参数"justOne"为1时,表示只删除找到的第一个文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值