首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Nodejs学习笔记(十四)— Mongoose介绍和入门

简介   Mongoose是在node.js异步环境下mongodb进行便捷操作对象模型工具   那么要使用它,首先你得装上node.js和mongodb,关于mongodb安装和操作介绍可以参考...'m'名字,且不区分大小写,模糊查询比较常用,正则形式匹配,正则方式就是javascript正则,用到比较多!...其它操作   其它还有比较多常用 索引和默认值   再看看我user.js这个schema修改 /** * 用户信息 */ var mongoose = require('....mongoose操作基本入门大致就是这些,自已试一下,入门完全没问题,并且比node-mongodb-native还是要简单明了一些,   在node.js中操作数据库,如果逻辑相对复杂时,大量回调嵌套还是比较郁闷...,下一篇于mongoose操作多逻辑组合回调嵌套问题给出一种方案^_^!

2.6K60

你真的了解mongoose吗?

('bufferCommands', false); 选项 connect 方法也接收一个 options 对象: mongoose.connect(uri, options); 这里我列举几个在日常使用中比较重要选项...建议不需要 mongoose 特殊处理就给前端数据都最好使用该方法转成普通 js 对象。...find() 方法查询结果是数组,即使没查询到内容,也会返回 [] 空数组。...sort修饰 在指定位置添加元素以更新数组字段 按照指定规则排序 限制数组大小 存储数组 options lean: true 返回普通 js 对象,而不是 Mongoose Documents...看完Models,最后让我们来看下在实战中比较有用Populate 联表(Populate) Mongoose populate() 可以连表查询,即在另外集合中引用其文档。

41.4K30
您找到你想要的搜索结果了吗?
是的
没有找到

Mongoose学习参考文档

下面例子比快速通道例子更加高级,可以进行高级扩展: var PersonSchema = new Schema({name:String,type:String}); //查询类似数据...当然这样更新很麻烦,可以使用$set属性来配置,这样也不用先查询,如果更新数据比较少,可用性还是很好: PersonModel.update({_id:_id},{$set:{name:'...remove方法 4.Sub Docs   如同SQL数据库中2张表有主外关系,Mongoose将2个Document嵌套叫做Sub-Docs(子文档)   简单说就是一个Document嵌套另外一个...,这里Query解读并不完善,仅仅是自己一点领悟而已。...,分比较明细,如果不带callback,则返回query,query没有执行预编译查询语句,该query对象执行方法都将返回自己,只有在执行exec方法时才执行查询,而且必须有回调。

24.2K90

Nodejs和Mongodb连接器Mongoose

同时它也是一个对象数据库,没有表、行等概念,也没有固定模式和结构,所有的数据以文档形式存储(文档,就是一个关联数组对象,它内部由属性组成,一个属性对应值可能是一个数、字符串、日期、数组,甚至是一个嵌套文档...------"); }); 了解集合 通过上节内容学习我们已经打下了基础,本节内容就开始MongoDB数据库进行具体操作。首先,我们再次简单介绍一下MongoDB数据库。...MongoDB —— 是一个对象数据库,没有表、行等概念,也没有固定模式和结构,所有的数据以Document(以下简称文档)形式存储(Document,就是一个关联数组对象,它内部由属性组成,...一个属性对应值可能是一个数、字符串、日期、数组,甚至是一个嵌套文档。)...如果我们要通过Mongoose去创建一个“集合”并进行增删改查,该怎么实现呢,到这里我们就要先了解Schema(数据属性模型)、Model、Entity了。 好,下面就开始去深入了解它们吧!

5.8K41

大数据技术之_22_MongoDB学习_MongoDB 简介、下载、安装、启动、配置和关闭 + MongoDB 基本操作 + Mongoose + 使用 java MongoDB 增删改查

hero 文档 // MongoDB 支持直接通过内嵌文档属性进行查询,如果要查询内嵌文档则可以通过.形式来匹配 // 如果要通过内嵌文档来对文档进行查询,此时属性名必须使用引号(单双引号均可)...Mongoose 是一个对象文档模型(ODM)库,它对 Node 原生 MongoDB 模块进行了进一步优化封装,并提供了更多功能。   ...4.2 Mongoose 好处 • 可以为文档创建一个模式结构(Schema) • 可以对模型中对象/文档进行验证 • 数据可以通过类型转换转换为对象模型 • 可以使用中间件来应用业务逻辑挂钩 •...err) {         // console.log(doc);         // 通过 find() 查询结果,返回对象就是 Document 对象或 Document 对象数组。         ...通过 Model 查询到结果都是 Document 对象或 Document 对象数组

17.7K30

通过Model.find查找数据方法

查找数据 通过Model.find方法 不传入参数会查找该表所有数据 该方法返回值始终是数组 第一个参数 指定数据某个键进行查找,键也能是正则表达式 const data = await User.find...User.find({ name: /\d/ }, { name: 1, email: 1, _id: 0 }); // _id默认带着,这里忽略了 第三个参数 可以使用keip limit sort来查询结果进行操作...,可以使用一些方法再结果进行操作,相当于把第二个参数写道外面了 select:设置查询结果数据包含哪些键 接收列明字符串组成数组,如果字符串前加上-则是不显示 const datas = await...User.find().select(["name", "-_id"]); // 查询所有数据 返回对象只有name limit:限制查找结果长度 skip:设置查找结果起式位置 sort:查找结果排序...lean:将结果返回为普通js对象而不是查询得到Mongoose Documents类型对象 常用内置字段: 字段 说明 $or 或关系 $nor 或关系取反 $gt 大于 $gte 大于等于

1.5K30

Mongoose 插件记录Node.js API日志

那么如何创建一个 Mongoose 插件,以更清洁方式为你进行记录并简化 API 日志? Mongoose插件是什么? 在 Mongoose 中,模式是可插入。...Diff: 这是主要属性,它是两个 JSON diff 如果你希望自己应用程序有意义,可以添加更多字段,也可以根据需要更改和升级架构。...result 是累加器,是可变。 _.isEqual: 在两个值之间进行深度比较,以确定它们是否相等。...isEqual:此方法支持比较数组数组缓冲区、布尔值、日期对象、错误对象、映射、数字、对象、正则表达式、集合、字符串、符号和类型化数组。...对象通过它们自己方法比较,而不是通过继承、可枚举属性进行比较。函数和 DOM 节点则进行严格相等比较,即使用 ===。 这里我们迭代每个对象属性和值,并将它与旧对象进行比较

2.7K40

Mongoose 实现关联查询和踩坑记录

本文源自工作中一个问题,在使用 Mongoose 做关联查询时发现使用 populate() 方法不能直接关联非 _id 之外其它字段,在网上搜索时这块解决方案也并不是很多,在经过一番查阅、测试之后...内嵌是把相关联数据保存在同一个文档内,我们可以用对象数组形式来存储,这样好处是我们可以在一个单一操作内完成,可以发送较少请求到数据库服务端,但是这种内嵌类型也是一种冗余数据模型,会造成数据重复...,如果很复杂多或多关系,表达起来就很复杂,也要注意内嵌还有一个最大单条文档记录限制为 16MB。...,经过 lookup 阶段处理,输出新文档中会包含一个新生成数组列。...如果需要指定哪些字段返回,哪些需要过滤,可定义 $project 对象,关联查询字段过滤可使用 别名.关联文档中字段 进行指定。

26.4K20

Node.js中MongoDB

"jQuery", "abc"], core:["三大框架","node.js"]}}}); db.colleges.find(); //11.查询有核心课程为 三大框架 文档 //MongoDB支持直接通过内嵌文档属性进行查询...,如果要查询内嵌文档则可以通过.形式来匹配 //如果要通过内嵌文档来对文档进行查询,此时属性名必须使用引号 db.colleges.find({'classes.core':"三大框架"}); /.../12.向name为Html5文档中,添加一个新核心课程 "微信小程序" //$push 用于向数组中添加一个新元素 //$addToSet 向数组中添加一个新元素 , 如果数组中已经存在了该元素...mongoose相关概念 mongoose中提供了几个新对象: + Schema(模式对象):Schema对象定义约束了数据库中文档结构 + Model:Model对象作为集合中所有文档表示...监听MongoDB数据库连接状态:在mongoose对象中,有一个属性叫做connection,该对象表示就是数据库连接, 通过监视该对象状态,可以来监听数据库连接与断开 mongoose.connection.once

5.2K40

【GraphQL】225-GraphQL真香入门教程

GraphQL API 中数据提供了一套易于理解完整描述,使得客户端能够准确地获得它需要数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大开发者工具。...这时候,我们可以对这个对象字段进行次级选择(sub-selection)。...另外,我们可以使用 [类型] 来表示一类数组,如: [Int] 表示整型数组; [String] 表示字符串型数组; 2....属性上 属性定义 定义在类型后,键值形式 定义在参数对象 fields 属性中,值为对象,每个属性名为键名,值也是对象,其中 type属性值为 graphql 中属性,下面会补充 补充: fields...定义query(查询) 定义查询时候,跟之前类似,可以参照下面对比图理解,这里比较不同是,多了个 resolve 方法,这个方法是用来执行处理查询逻辑,其实就是之前 root 中方法。

8.1K21

MongoDB增删改查操作

// mongoose.Schema() 是一个构造函数,要new一个实例对象 //2、设定集合规则 const courseSchema = new mongoose.Schema({ name...实际在数据库中产生集合名为courses 1.创建文档 创建文档实际上就是向集合中插入数据。 方法1 分为两步: ①创建集合实例。 ②调用实例对象save方法将数据保存到数据库中。...: true }); // 调用实例对象save方法将数据保存到数据库中。...,例如文章信息和用户信息存储在不同集合中,但文章是某个用户发表查询文章所有信息包括发表用户,就需要用到集合关联。...使用id集合进行关联 使用populate方法进行关联集合查询 // 关联集合 ​ const mongoose = require('mongoose'); // 连接数据库 mongoose.connect

6.2K10

GraphQL真香入门教程

GraphQL API 中数据提供了一套易于理解完整描述,使得客户端能够准确地获得它需要数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大开发者工具。...这时候,我们可以对这个对象字段进行次级选择(sub-selection)。...另外,我们可以使用 [类型] 来表示一类数组,如: [Int] 表示整型数组; [String] 表示字符串型数组; 2....类名 跟在 type 字符后面,这里是 typeHero 在参数对象 name 属性上 属性定义 定义在类型后,键值形式 定义在参数对象 fields 属性中,值为对象,每个属性名为键名,值也是对象...定义query(查询) 定义查询时候,跟之前类似,可以参照下面对比图理解,这里比较不同是,多了个 resolve 方法,这个方法是用来执行处理查询逻辑,其实就是之前 root 中方法。

7.1K30

初试MongoDB学习之Mongoose使用

Mongoose本质是一个对象文档模型(ODM)库, 他Node原生MongoDB模块进行了一部优化封装,并且提供了更多功能。...#Mongoose优势 可以像操作对象一样操作数据库 可以为文档创建一个模式结构(Schema) 可以对模型中文档/文档进行验证 数据可以通过类型转换为对象模型 可以使用中间件来应用业务逻辑挂钩 比...}) #mongoose基本使用 #mongoose几个新对象 在MongoDB中,多个Document可以组成Collection(以下简称集合),多个集合又可以组成数据库。...文档 —— 是MongoDB核心概念,是键值一个有序集,在JavaScript里文档被表示成对象。同时它也是MongoDB中数据基本单元,非常类似于关系型数据库管理系统中行,但更具表现力。...#创建model(集合) let personModel= mongoose.model('person', personSchema); person:数据库中集合名称,当我们其添加数据时如果person

5.9K20

精读《Prisma 使用》

Prisma Schema Primsa Schema 是在最大程度贴近数据库结构描述基础上,关联关系进行了进一步抽象,并且背后维护了与数据模型对应关系,下图很好说明了这一点: 可以看到,几乎与数据库定义一模一样...} 这种类型字段无法通过 ORM API 查询,但可以通过 queryRaw 方式查询。queryRaw 是一种 ORM 原始 SQL 模式支持,在 Prisma Client 会提到。...where name="Eleanor",即通过对象嵌套方式表达语义。...ORM 容易引发性能问题 当数据量大,或者性能、资源敏感情况下,我们需要对 SQL 进行优化,甚至我们需要对特定 Mysql 特定版本某些内核错误, SQL 进行某些看似无意义申明调优(比如在...而 ORM 是建立在一个较为理想化理论基础上,即数据模型可以很好转化为对象操作,然而对象操作由于屏蔽了细节,我们无法 SQL 进行针对性调优。

3.5K30

Node.js 开发者需要知道 13 个常用库

想象一下,原本复杂SQL查询语句,现在可以通过JavaScript对象来模拟数据库表结构,再通过Sequelize连接到你喜欢关系型数据库,像对待JavaScript对象一样查询和修改数据。...查询简化:Mongoose提供了简单查询抽象,让开发者编写MongoDB事务代码变得更少。这样不仅提高了开发效率,也使代码更加清晰易懂。...Mongoose能够帮助你快速构建出一个稳定数据模型,同时通过它验证机制确保数据准确性和安全性。 或者在开发电商平台时,你需要对商品信息进行复杂查询和更新。...Mongoose链式查询功能能够让你轻松实现这些需求,同时保持代码简洁和可维护性。...数组对象操作:提供了内置解决方案,如过滤(filter)、搜索(search)、扁平映射(flatMap)等,特别适合处理对象数组。 代码简洁性:帮助开发者避免冗余,维护清晰、简洁代码结构。

59621
领券