iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Nodejs中mongoose工具的示例分析
  • 261
分享到

Nodejs中mongoose工具的示例分析

2023-06-15 09:06:48 261人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关nodejs中monGoose工具的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Mongoose 是在nodejs环境下,对mongodb进行便捷操作的对象模型工具。

这篇文章将为大家详细讲解有关nodejs中monGoose工具的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Mongoose 是在nodejs环境下,对mongodb进行便捷操作的对象模型工具。本文介绍解(翻)密(译)Mongoose插件

Schema

开始我们就要讲到Schema,一个Schema对应的是mongoDB的collection(相当于sql table),并且定义其结构。

var mongoose = require('mongoose');var Schema = mongoose.Schema;//定义一个博客结构var blogSchema = new Schema({    title:  String,    author: String,    body:   String,    comments: [{ body: String, date: Date }],    date: { type: Date, default: Date.now },    hidden: Boolean,    meta: {      votes: Number,      favs:  Number    }  });

Schema可用Type:

.String (ex: 'ABCD')

.Number (ex: 123)

.Date (ex: new Date)

.Buffer (ex: new Buffer(0))

.Boolean (ex: false)

.Schema.Types.Mixed (ex: {any:{thing:'ok'}})

.Schema.Types.ObjectId (ex:new mongoose.Types.ObjectID)

.Array (ex:[1,2,3])

.Schema.Types.Decimal128

.Map (ex: new Map([['key','value']]))

我们可以通过一段代码,将Schema转化成Model: mongoose.model(modelName,Schema)

var Blog = mongoose.model('Blog', blogSchema);

赋予Schema方法,当方法转成Model的时候,会将方法给予Model

//创建一个变量,Schemavar animalSchema = new Schema({ name: String, type: String });//将方法赋予这个SchemaanimalSchema.methods.findSimilarTypes = function(cb) {    return this.model('Animal').find({ type: this.type }, cb);};
var Animal = mongoose.model('Animal', animalSchema);var dog = new Animal({ type: 'dog' });dog.findSimilarTypes(function(err, dogs) {    console.log(dogs); // woof});

在Schema方法里,不要使用箭头函数,它会重新绑定this。

赋予Schema static (静态)方法,我们继续使用上面的例子:

//赋予静态方法,可以再Model不实例化的情况下调用animalSchema.statics.findByName = function(name, cb) {    return this.find({ name: new RegExp(name, 'i') }, cb);};var Animal = mongoose.model('Animal', animalSchema);Animal.findByName('fido', function(err, animals) {    console.log(animals);});

Schema索引 index

MongoDB支持二级索引,在mongoose,我们可以将索引定在Schema层。

var animalSchema = new Schema({    name: String,    type: String,    tags: { type: [String], index: true } // 声明在字段层});animalSchema.index({ name: 1, type: -1 }); // 声明在schema层

使用index(二级索引)的时候记得要disable Mongodb 的 autoIndex。

mongoose.connect('mongodb://user:pass@localhost:port/database', { autoIndex: false });  // 或者mongoose.createConnection('mongodb://user:pass@localhost:port/database', { autoIndex: false });  // 或者animalSchema.set('autoIndex', false);  // 或者new Schema({..}, { autoIndex: false });

虚拟化

// 声明一个Schemavar personSchema = new Schema({    name: {      first: String,      last: String    }});// 转成Modelvar Person = mongoose.model('Person', personSchema);// 实例化Modelvar axl = new Person({    name: { first: 'Axl', last: 'Rose' }});//1.如果我们想要打印Person的姓名console.log(axl.name.first + ' ' + axl.name.last); // Axl Rose//2.使用虚拟化,我们声明一个虚拟字段,然后通过get给其赋值personSchema.virtual('fullName').get(function () {  return this.name.first + ' ' + this.name.last;});console.log(axl.fullName); // Axl Rose

别名

var personSchema = new Schema({  n: {    type: String,    // 给予 n 别名 name,n与name指向同一个值    alias: 'name'  }});// 修改name同样修改n,方向一样var person = new Person({ name: 'Val' });console.log(person); // { n: 'Val' }console.log(person.toObject({ virtuals: true })); // { n: 'Val', name: 'Val' }console.log(person.name); // "Val"person.name = 'Not Val';console.log(person); // { n: 'Not Val' }

Model & Documents

var Tank = mongoose.model('Tank', yourSchema);var small = new Tank({ size: 'small' });//使用save的方法small.save(function (err) {  if (err) return handleError(err);  // saved!});// 或者 使用createTank.create({ size: 'small' }, function (err, small) {  if (err) return handleError(err);  // saved!});// 或者 使用insertMany/insertOneTank.insertMany([{ size: 'small' }], function(err) {});

//deleteOne 或者 deleteManyTank.deleteOne({ size: 'large' }, function (err) {  if (err) return handleError(err);  // 只删掉符合项的第一条});

Tank.updateOne({ size: 'large' }, { name: 'T-90' }, function(err, res) {});// findOneAndUpdate 查找出相应的数据,修改,并返还给程序

// 查提供了多种方式,find,findById,findOne,和whereTank.find({ size: 'small' }).where('createdDate').gt(oneYearAgo).exec(callback);

关于“Nodejs中mongoose工具的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: Nodejs中mongoose工具的示例分析

本文链接: https://www.lsjlt.com/news/279334.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Nodejs中mongoose工具的示例分析
    这篇文章将为大家详细讲解有关Nodejs中mongoose工具的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Mongoose 是在nodejs环境下,对mongodb进行便捷操作的对象模型工具。...
    99+
    2023-06-15
  • LINQ工具集的示例分析
    这篇文章给大家分享的是有关LINQ工具集的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。LINQ工具集LINQ提供了很多可能性。它显著会更改如何处理和操作与您的应用程序和组件的数据的一些方面。在这里我们将...
    99+
    2023-06-17
  • Java工具类DateUtils的示例分析
    这篇文章主要介绍了Java工具类DateUtils的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下import java.text.ParseE...
    99+
    2023-05-30
    java dateutils
  • Python中的画图工具库的示例分析
    这篇文章给大家分享的是有关Python中的画图工具库的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Python对代码格...
    99+
    2023-06-14
  • nodejs中cookie和session的示例分析
    小编给大家分享一下nodejs中cookie和session的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!用惯了框架中的插件,最近在重温node基础模块...
    99+
    2023-06-07
  • Nodejs中callback回调的示例分析
    小编给大家分享一下Nodejs中callback回调的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是callback  很显然,字面意思就...
    99+
    2023-06-15
  • JavaScript工具库之Lodash的示例分析
    小编给大家分享一下JavaScript工具库之Lodash的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!lodash演...
    99+
    2024-04-02
  • NodeJS爬虫的示例分析
    小编给大家分享一下NodeJS爬虫的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! request 库requ...
    99+
    2024-04-02
  • node.js命令行工具的示例分析
    这篇文章将为大家详细讲解有关node.js命令行工具的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一. 先了解一下package.json每个项目的根目录都有一...
    99+
    2024-04-02
  • Bootstrap中响应式实用工具的示例分析
    这篇文章给大家分享的是有关Bootstrap中响应式实用工具的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Bootstrap 提供了一些辅助类,以便更快地实现对移动设备...
    99+
    2024-04-02
  • 基于python中mysql复制工具的示例分析
    这篇文章主要为大家展示了“基于python中mysql复制工具的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“基于python中mysql复制工具的示例...
    99+
    2024-04-02
  • Linux中Shell文本处理工具的示例分析
    这篇文章给大家分享的是有关Linux中Shell文本处理工具的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。提供的例子和参数都是最常用和最为实用的;我对shell脚本使用的原则是命令单行书写,尽量不要超过...
    99+
    2023-06-13
  • Nodejs中模块规范的示例分析
    这篇文章主要为大家展示了“Nodejs中模块规范的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Nodejs中模块规范的示例分析”这篇文章吧。CommonJS 模块规范以前加载 JS 文...
    99+
    2023-06-15
  • Nodejs中异步I/O的示例分析
    小编给大家分享一下Nodejs中异步I/O的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!“异步”这个名词其实在Node之前就已经诞生了。但是在绝大多数高...
    99+
    2023-06-14
  • nodejs中模块定义的示例分析
    这篇文章将为大家详细讲解有关nodejs中模块定义的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:1.模块定义nodejs所谓的模块就是一个文件!一个....
    99+
    2024-04-02
  • chrome开发者工具timeline的示例分析
    这篇文章给大家分享的是有关chrome开发者工具timeline的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、概述       ...
    99+
    2023-06-08
  • python中自动化运维工具ansible的示例分析
    这篇文章主要介绍python中自动化运维工具ansible的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!ansible 简介ansible 是什么?  ansible是新出现的自动化运维工具,基于Pytho...
    99+
    2023-06-20
  • Java中文件操作工具类fileUtil的示例分析
    小编给大家分享一下Java中文件操作工具类fileUtil的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:package com.gc...
    99+
    2023-05-30
    java
  • jQuery中extend()与工具方法、实例方法的示例分析
    这篇文章主要介绍jQuery中extend()与工具方法、实例方法的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体如下:使用jQuery的时候会发现,jQuery中有的函...
    99+
    2024-04-02
  • Linux开发工具和Windows开发工具对比的示例分析
    这篇文章给大家分享的是有关Linux开发工具和Windows开发工具对比的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Linux开发工具就C++开发工具而言,与Windows下微软(VC, VS2005...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作