'); mongoose.connect('mongodb://127.0.0.1:27017/blog'); 定义一个Schema(也就是Mongodb中的Collections集合),更多字段类型,...console.log('删除成功'); } }); 查询记录 User.findById(userId, callback); // one record User.findOne...说到这里,我们先来说一个其他的问题:“关于Mongodb中两个集合之间的对应关系,设计呢?”...通过查找资料我的总结如下: 如果只需要通过A集合查询B集合,而不需要反过来查询,也就是单向的关系(如文章和评论,只需要展示文章的时候,将其评论展示即可),那么可以在A集合中建立一个子集合B。...如果既需要通过A查询B,又需要通过B查询A(如作者和文章,需要查询某作者下的所有文章,展示文章的时候,有需要展示作者的相关信息),那么可以在子集合中通过一个唯一字段关联父集合。
: String, hobbies: [String] }); // 使用规则创建集合 const User = mongoose.model('User', userSchema); //...查询用户集合中的所有文档 // User.find().then(result => console.log(result)); // 通过_id字段查找文档 // User.find({_id: '...5c09f267aeb04b22f8460968'}).then(result => console.log(result)) // findOne方法返回一条文档 默认返回当前集合中的第一条文档 /.../ User.findOne({name: '李四'}).then(result => console.log(result)) // 查询用户集合中年龄字段大于20并且小于40的文档 // 1.User.find...({age: {$gt: 20, $lt: 40}}).then(result => console.log(result)) // 2.查询用户集合中hobbies字段值包含足球的文档 // User.find
, hobbies: [String] }); // 使用规则创建集合 const User = mongoose.model('User', userSchema); // 查询用户集合中的所有文档...通过_id字段查找文档 // User.find({_id: '5c09f267aeb04b22f8460968'}).then(result => console.log(result)) // findOne...方法返回一条文档 默认返回当前集合中的第一条文档 // User.findOne({name: '李四'}).then(result => console.log(result)) // 查询用户集合中年龄字段大于...20并且小于40的文档 // User.find({age: {$gt: 20, $lt: 40}}).then(result => console.log(result)) // 查询用户集合中hobbies...hobbies: [String] }); // 使用规则创建集合 const User = mongoose.model('User', userSchema); // 找到要删除的文档并且删除
db.users.findOne({age:25}).name; // 查询一个符合条件的文档对象的属性值 db.users.findOne({age:25}).count(); // ...查询一个符合条件的文档对象的属性值(该方法常用) db.users.findOne({age:25}).length(); // 查询一个符合条件的文档对象的属性值(该方法不常用) 删除文档 db.collection.remove...4.5 Schema--模式对象(约束对象) 使用 Mongoose 你必须经常定义模式。 模式为集合中的文档定义字段和字段类型。 ...,通过 Model 才能对数据库进行操作 // mongoose.model(modelName, schema): // modelName 就是要映射的集合名称,mongoose 会自动将集合名称变成复数...,通过 Model 才能对数据库进行操作 // mongoose.model(modelName, schema): // modelName 就是要映射的集合名称,mongoose 会自动将集合名称变成复数
创建集合 创建集合分为两步,-是对对集合设定规则,二是创建集合,创建mongoose.Schema构造函数的实例即可创建集合。...= mongoose.model ('Course', courseSchema); //第一个参数是集合名称,第二个是集合规则。...实际在数据库中产生的集合名为courses 2.创建文档 创建文档实际上就是向集合中插入数据。 方法1 分为两步: ①创建集合实例。 ②调用实例对象下的save方法将数据保存到数据库中。...通常不同集合的数据之间是有关系的,例如文章信息和用户信息存储在不同集合中,但文章是某个用户发表的 要查询文章的所有信息包括发表用户,就需要用到集合关联。...// 关联集合 const mongoose = require('mongoose'); // 连接数据库 mongoose.connect('mongodb://localhost/playground
每个 schema 映射到 MongoDB 的集合(collection)和定义该集合(collection)中的文档的形式。...findOne({ _id: undefined }) 相当于 findOne({}),返回任意一条数据。...findOne 该方法返回查找到的所有实例的第一个 Model.findOne(conditions, [projection], [options], [callback]) 如果查询条件是 _id...看完Models,最后让我们来看下在实战中比较有用的Populate 联表(Populate) Mongoose 的 populate() 可以连表查询,即在另外的集合中引用其文档。...refs 创建 Model 的时候,可给该 Model 中关联存储其它集合 _id 的字段设置 ref 选项。
MongoDB是一款流行的文档型数据库,可以在Node.js中使用官方的MongoDB包或者第三方包mongoose进行操作。...使用官方的 mongodb 包来操作 MongoDB 数据库官方的 mongodb 包提供了许多方法来操作 MongoDB 数据库,例如:连接数据库、创建集合、插入文档、查询文档、更新文档、删除文档等。...其中,Schema 表示集合(表)的结构,Model 表示集合(表)的构造函数,可以通过 Model 对集合(表)进行增删改查数据的操作。...发布 Model 时,需要将 Schema 传入 mongoose.model() 方法中,生成集合(表)的构造函数。...在查询数据时,可以通过 Model 对象进行查询,例如 find() 方法查询所有数据、findOne() 方法查询单个数据等。
数据库(database) 数据库是一个仓库,在仓库中可以存放多个集合 集合(collection) 集合类似于数组,在集合中可以存放多个文档 文档(document) 数据库中的最小单位,存储和操作的内容都是文档...集合名>.find({}) 可以接受一个对象作为条件参数 {属性名1:值,属性名2:值} 查询属性是指定值的文档 db.集合名>.findOne({}) 用来查询集合中符合条件的第一个文档 db....集合名>.find({}).count() 查询所有结果的数量 修改集合中符合条件的文档 db.集合名>.update({查询条件},{新对象},{配置}) 默认只修改一个 db....Model 对象作为集合中的所有文档表示 相当于 MongoDB数据库中的集合collection Document 表示集合中的具体文档 Schema 对象 const Schema = mongoose.Schema...,通过 Model 才能对数据库进行操作 // mongoose.model(modelName, Schema); // modelName 是要映射的集合名 // mongoose 会自动将集合名变成复数
集合名>.findOne({}) 用来查询集合中符合条件的第一个文档 db.集合名>.find({}).count() 查询所有结果的数量 修改集合中符合条件的文档 db....集合名>.deleteOne({条件}) 删除符合条件的一个文档 db.集合名>.deleteMany({条件}) 删除符合条件的多个文档 db....表示集合中的具体文档 Schema 对象 const Schema = mongoose.Schema; // 创建 Schema(模式)对象 let stuSchema = new Schema...,通过 Model 才能对数据库进行操作 // mongoose.model(modelName, Schema); // modelName 是要映射的集合名 // mongoose 会自动将集合名变成复数...err){ console.log('插入成功'); } }); StuModel.findOne({}, function (err, doc) { if (!
, "name":"你不知道的JavaScript(下卷)", } ] 定义 Schema 使用 Mongoose 第一步要先定义集合的 Schema。...$lookup.localFiled: 关联的源集合中的字段,本示例中是 Authors 表的 authorId 字段。...$lookup.foreignFiled: 被 Join 的集合的字段,本示例中是 Books 表的 bookId 字段。 $as: 别名,关联查询返回的这个结果起一个新的名称。...MongoDB 官方文档 #lookup-aggregation[2] Mongoose Virtual 和 populate 实现 Mongoose 的 populate 方法默认情况下是指向的要关联的集合的...在我们本节示例中 Authors 集合会关联 Books 集合,那么我们就需要在 Authors 集合中定义 virtual, 下面的一些参数和 $lookup 是一样的,个别参数做下介绍: ref:
现在市面上可用的就是微博的t.cn和一些第三方的生成短链接工具,但这两类工具都有一些使用上的问题,例如:t.cn现在的规则是会出现一个中转页不会直接跳转,而第三方的工具因为是一个公共平台,有时可能会因一些不良信息导致整个平台无法访问...和shortid和body-parser npm install mongoose npm install shortid npm install body-parser 下面分别对使用到的这三个包简单说明一下...这里的mongoose就是npm的一个包,主要是为程序提供连接mongodb并增删查改的功能。...(setup.mongo_db, setup.mongo_options); UrlTable.findOne({ shortUrl:shortUrl }).then((result) => {...); UrlTable.findOne({ shortUrl:shortUrl }).then((result) => { //待添加错误处理 res.redirect
1.创建集合 创建集合分为两步,-是对对集合设定规则,二是创建集合,创建mongoose.Schema构造函数的实例即可创建集合。...= mongoose.model ('Course', courseSchema); //第一个参数是集合名称,第二个是集合规则。...实际在数据库中产生的集合名为courses 1.创建文档 创建文档实际上就是向集合中插入数据。 方法1 分为两步: ①创建集合实例。 ②调用实例对象下的save方法将数据保存到数据库中。...通常不同集合的数据之间是有关系的,例如文章信息和用户信息存储在不同集合中,但文章是某个用户发表的 要查询文章的所有信息包括发表用户,就需要用到集合关联。...使用id对集合进行关联 使用populate方法进行关联集合查询 // 关联集合 const mongoose = require('mongoose'); // 连接数据库 mongoose.connect
}) #mongoose基本使用 #mongoose的几个新的对象 在MongoDB中,多个Document可以组成Collection(以下简称集合),多个集合又可以组成数据库。...集合 —— 由一组文档组成,如果将MongoDB中的一个文档比喻成关系型数据库中的一行,那么一个集合就相当于一张表。...mongoose中任何任何事物都是从Schema开始的。每一个Schema对应MongoDB中的一个集合(collection)。Schema中定义了集合中文档(document)的样式。...#创建model(集合) let personModel= mongoose.model('person', personSchema); person:数据库中的集合名称,当我们对其添加数据时如果person...err){ console.log(data) }else{ throw err; } }) MongoDB的find()、findOne() 等命令在
/common/img/logo.png" alt=""> mongoose 操作mongodb的 npm i mongoose --save 就不一一列举所有的插件了(没有用vuex) 开发上的一些事...初始化一条数据 如果对mongodb,mongoose没有基础的了解,建议看一看mongoose深入浅出 ,mongoose基础操作 // controllers/student.js const...集合: 在该集合中,学生参加过的考试记录,存在exams数组中,当想实现分页查询几条数据的时候,需要用到$slice $slice:[start,size] 第一个参数表示,数组开始的下标,第二个表示截取的数量...,但是有很多时候不同的集合直接是需要关联的,这是就用到了mongoose提供的populate 直接看图,不同集合直接的关联,用的就是_id,比如下图中,学生参加的考试,关联了试卷,试卷里面又关联了题目...更多的可以看看我项目中的实际代码都在server/controllers下面 关联集合的新增 在系统中,教师可以增加试卷,这个时候我就不知道该怎么保存前台传过来的数据。
使用 Mongoose 简单的建立一个博客数据库以及模型之间的关联。...categories: [ // 分类与分类模型相关联 6 { 7 type: mongoose.SchemaTypes.ObjectId, // 关联分类模型中的唯一 _id...js 1;(async function() { 2 const cate1 = await Category.findOne({ 3 name: "vuejs" 4 }); 5 const...cate2 = await Category.findOne({ 6 name: "nodejs" 7 }); 8 const post1 = await Post.findOne({ 9...populate()可以跟踪关联的_id,输出详细的内容。
', schema); 上面的参数 Tank是跟model对应的集合(collection)对应的单数形式。...Mongoose会自动找到名称是model的名字的复数形式。...、findbyId,findOne,和where这些静态方法。...: findOne()是单个文档 find() 是文档列表 count() 是文档数量 update() 是更新的文档数量 九 中间件–Middleware 中间件(pre 和 post 钩子)...findOne({title:'my book'}). populate('author').
集合(collection):集合类似于数组,在集合中可以存放文档。 文档(document):文档数据库中的最小单位,我们存储和操作的内容都是文档。...var cno=db.it666.findOne({"cname":"HTML5学院"}).cno; db.section.find({"cno":cno}); //25.查询Java学院的所有员工...var cno = db.it666.findOne({cname:"Java学院"}).cno; db.section.find({cno:cno}); //26.查询工资大于20000的员工 db.section.find...mongoose的相关概念 mongoose中提供了几个新的对象: + Schema(模式对象):Schema对象定义约束了数据库中的文档结构 + Model:Model对象作为集合中的所有文档的表示...,相当于MongoDB数据库中的集合collection + Document: Document表示集合中的具体文档 mongoose使用步骤 1.下载安装Mongoose: npm i mongoose
、application/json 两种格式的请求体。.../model/connect"); 9.在 model 文件夹下新建 user.js 用来创建用户集合 //创建用户集合 //引入mongoose模块 const mongoose = require(..."mongoose"); const { Schema, model } = mongoose; //设定集合规则 const userSchema = new Schema({ account...User, } 10.通过 user.js 插入一条测试数据, 通过 mongodb compass 工具查看集合是否建立成功, 然后注释掉插入测试数据的代码 // 插入一条测试数据 User.create...注册接口 register.post("/register", async (req, res) => { // 数据库中查询用户是否存在 const user = await User.findOne
1.MongoDB增删改查操作 1.1 创建集合 创建集合分为两步,一是对对集合设定规则,二是创建集合,创建mongoose.Schema构造函数的实例即可创建集合。...: Boolean }) // 使用规则创建集合 // 1.集合名称 // 2.集合规则 const Course = mongoose.model('Course', courseSchema);...mongoose验证 在创建集合规则时,可以设置当前字段的验证规则,验证失败就则输入插入失败。...1.7 集合关联 通常不同集合的数据之间是有关系的,例如文章信息和用户信息存储在不同集合中,但文章是某个用户发表的,要查询文章的所有信息包括发表用户,就需要用到集合关联。...集合关联实现 // 用户集合 const User = mongoose.model('User', new mongoose.Schema({ name: { type: String } }));
Token模型定义: module.exports = app => { const mongoose = app.mongoose; const Schema = mongoose.Schema..., { timestamps: true }); return mongoose.model('Token', TokenSchema); }; 复制代码 还准备了一个公共的BaseController...const { username, password } = ctx.request.body; const ret = await ctx.model.User.findOne({ username...const token = ctx.request.header['x-token']; const ret = await ctx.model.Token.findOne({ token }); if...const token = ctx.request.header['x-token']; const ret = await ctx.model.Token.findOne({ token }); if
领取专属 10元无门槛券
手把手带您无忧上云