mongoose的基本操作(一)

2024-05-26 08:32
文章标签 基本操作 mongoose

本文主要是介绍mongoose的基本操作(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MongoDB是一个开源的NoSQL数据库,相比MySQL那样的关系型数据库,它更显得轻巧、灵活,非常适合在数据规模很大、事务性不强的场合下使用。同时它也是一个对象数据库,没有表、行等概念,也没有固定的模式和结构,所有的数据以文档的形式存储(文档,就是一个关联数组式的对象,它的内部由属性组成,一个属性对应的值可能是一个数、字符串、日期、数组,甚至是一个嵌套的文档。),数据格式就是JSON。介绍了MongoDB,我们下面就要认识Mongoose了。1. Mongoose是什么?Mongoose是MongoDB的一个对象模型工具,是基于node-mongodb-native开发的MongoDB nodejs驱动,可以在异步的环境下执行。同时它也是针对MongoDB操作的一个对象模型库,封装了MongoDB对文档的的一些增删改查等常用方法,让NodeJS操作Mongodb数据库变得更加灵活简单。2. Mongoose能做什么?Mongoose,因为封装了对MongoDB对文档操作的常用处理方法,让NodeJS操作Mongodb数据库变得easy、easy、So easy!1. 安装mongoose:npm install mongoose
2. 引用mongoose:var mongoose = require("mongoose");
3. 使用"mongoose"连接数据库:var db = mongoose.connect("mongodb://user:pass@localhost:port/database");
4. 执行下面代码检查默认数据库test,是否可以正常连接成功?var mongoose = require("mongoose");
var db = mongoose.connect("mongodb://127.0.0.1:27017/test");
db.connection.on("error", function (error) {console.log("数据库连接失败:" + error);
});
db.connection.on("open", function () {console.log("------数据库连接成功!------");
});在MongoDB中,多个Document可以组成Collection(以下简称集合),多个集合又可以组成数据库。我们想要操作MongoDB数据,那就得先要具备上面所说的包含数据的“文档”,文档又是什么意思呢,请看如下介绍。文档 —— 是MongoDB的核心概念,是键值对的一个有序集,在JavaScript里文档被表示成对象。同时它也是MongoDB中数据的基本单元,非常类似于关系型数据库管理系统中的行,但更具表现力。集合 —— 由一组文档组成,如果将MongoDB中的一个文档比喻成关系型数据库中的一行,那么一个集合就相当于一张表。如果我们要通过Mongoose去创建一个“集合”并对其进行增删改查,该怎么实现呢,到这里我们就要先了解Schema(数据属性模型)、Model、Entity了。Schema —— 一种以文件形式存储的数据库模型骨架,无法直接通往数据库端,也就是说它不具备对数据库的操作能力,仅仅只是数据库模型在程序片段中的一种表现,可以说是数据属性模型(传统意义的表结构),又或着是“集合”的模型骨架。那如何去定义一个Schema呢,请看示例:var mongoose = require("mongoose");var TestSchema = new mongoose.Schema({name : { type:String },//属性name,类型为Stringage  : { type:Number, default:0 },//属性age,类型为Number,默认为0time : { type:Date, default:Date.now },email: { type:String,default:''}
});
基本属性类型有:字符串、日期型、数值型、布尔型(Boolean)、null、数组、内嵌文档等。Model —— 由Schema构造生成的模型,除了Schema定义的数据库骨架以外,还具有数据库操作的行为,类似于管理数据库属性、行为的类。如何通过Schema来创建Model呢,如下示例:var db = mongoose.connect("mongodb://127.0.0.1:27017/test");// 创建Model
var TestModel = db.model("test1", TestSchema);
test1:数据库中的集合名称,当我们对其添加数据时如果test1已经存在,则会保存到其目录下,如果未存在,则会创建test1集合,然后在保存数据。Entity —— 由Model创建的实体,使用save方法保存数据,Model和Entity都有能影响数据库的操作,但Model比Entity更具操作性。使用Model创建Entity,如下示例:var TestEntity = new TestModel({name : "Lenka",age  : 36,email: "lenka@qq.com"
});
console.log(TestEntity.name); // Lenka
console.log(TestEntity.age); // 36
创建成功之后,Schema属性就变成了Model和Entity的公共属性了。
实例:
var mongoose = require("mongoose");
var db = mongoose.connect("mongodb://127.0.0.1:27017/test");
var TestSchema = new mongoose.Schema({name : { type:String },age  : { type:Number, default:0 },email: { type:String },time : { type:Date, default:Date.now }
});
var TestModel = db.model("test1", TestSchema );
var TestEntity = new TestModel({name : "helloworld",age  : 28,email: "helloworld@qq.com"
});
TestEntity.save(function(error,doc){if(error){console.log("error :" + error);}else{console.log(doc);}
});

这篇关于mongoose的基本操作(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1003955

相关文章

MongoDB学习—(3)shell的基本操作

一,删除数据库中的集合文档 命令为 db.[documentName].drop() 二,删除数据库 命令为 db.dropDatabase() 执行该命令时,应该先进入想要删除的数据库中,如 三,shell中的help 我们可以运用shell中的help来查询相关的操作,查询数据库相关的就用db.help(),查询集合相关的就用db.[documentName].help

MongoDB学习—(2)shell的基本操作

一,创建一个数据库 使用use关键字,格式为 use [databasename] 当你这样创建一个数据库时,该数据库只是创建于内存中,只有你对数据库执行一些操作后,数据库才真正的创建,否则如果直接关掉mongodb,数据库在内存中会被删除掉。 二,查看所有数据库 命令为 show dbs Mysql中的命令为show databases,两者有所不同。 三,查看数据库中的现有的文

带头结点的线性链表的基本操作

持续了好久,终于有了这篇博客,链表的操作需要借助图像模型进行反复学习,这里尽可能的整理并记录下自己的思考,以备后面复习,和大家分享。需要说明的是,我们从实际应用角度出发重新定义了线性表。 一. 定义 从上一篇文章可以看到,由于链表在空间的合理利用上和插入、删除时不需要移动等优点,因此在很多场合下,它是线性表的首选存储结构。然而,它也存在某些实现的缺点,如求线性表的长度时不如顺序存储结构的

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作

写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作,荣幸在CSDN首发🐒 若您觉得内容有价值,还请评论告知一声,以便更多人受益。 转载请注明出处,尊重原创,从我做起。 👍 点赞、评论、收藏,三连走一波,让我们一起养成好习惯😜 在这里,您将

Github基本操作【学习笔记】

Set Up Git 配置全局用户名 git config --global user.name "Your Name Here" 配置全局邮箱 git config --global user.email "your_email@example.com" 配置全局邮箱 Create A Repo More about repositories Click

git:认识git和基本操作(1)

目录 一、版本控制器 1.安装git 2.创建git本地仓库 3.配置git 二、git操作(1) 1.工作区、暂存区、版本库 2.添加文件 3.查看.git 4.修改文件 一、版本控制器         所谓的版本控制器,就是能让你了解到每一个文件的修改历史。相应的,在企业级开发中,用来记录一个工程的每一次改动和管理版本迭代,同时方便多人协作开发。         g

6.2图的存储及基本操作

6.2.1顺序存储 邻接矩阵法,用一个一维数组存储图中顶点信息,二维数组存储图中边的信息 无向图 1.无向图的邻接矩阵关于对角线对称,可采用压缩存储 2.边数为e,则邻接矩阵中1为2e; 3.第i行or 第i列非零元素之和恰好为顶点i的度数 4.判断是否有边用0,1 5. 有向图 1.关于对角线不对称 2.行表示入度,列表示出度,行+列表示该顶点的度 6.2.2链式存储

MySql数据库基本操作练习

1、创建一个老师表 CREATE TABLE teachers (id INT (10) NOT NULL auto_increment,NAME nvarchar (10) NOT NULL,sex nvarchar (8) NOT NULL,PRIMARY KEY (id)); 2、对teachers表进行查询 SELECT*FROMteachers; 3、查询当前数据库中的所有表

Sqoop部署和基本操作

目录 一、说明二、部署三、常用命令 一、说明 数据导入(Import): Sqoop可以从关系型数据库(如MySQL、PostgreSQL、Oracle等)中抽取数据,并将其导入到Hadoop的HDFS中,存储为各种格式(如文本文件、Avro、Parquet等)供后续处理和分析使用。 导入过程中,Sqoop支持将数据直接导入到Hive表中,从而方便地进行SQL查询和分析。

庞峰Opencv学习(二)--对矩阵结构体CvMat的基本操作

1. CvMat结构体:(注释) typedef struct CvMat{int type; //数据类型以 CV_N{U|S|F}C{1,2,3...}表示int step; //表示一行有多少个字,在32位操作系统中,一个字为4个字节/* for internal use only */int* refcount;int hdr_refcount;union //