> 웹 프론트엔드 > JS 튜토리얼 > Nodejs의 몽구스 도구에 대해 자세히 알아보세요.

Nodejs의 몽구스 도구에 대해 자세히 알아보세요.

青灯夜游
풀어 주다: 2021-06-09 18:42:35
앞으로
2414명이 탐색했습니다.

이 글에서는 Nodejs 몽구스에 대해 자세히 소개하겠습니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.

Nodejs의 몽구스 도구에 대해 자세히 알아보세요.

Mongoose는 nodejs 환경에서 mongodb를 편리하게 운영하기 위한 객체 모델 도구입니다. 이 글에서는 복호화(번역) Mongoose 플러그인을 소개합니다.

Schema

스키마에 대해 이야기해 보세요. 스키마는 mongodb 컬렉션(SQL 테이블과 동일)에 해당하고 해당 구조를 정의합니다.

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 사용 가능한 유형:

.String(예: 'ABCD')

.Number(예: 123)

.Date(예: new Date)

.Buffer(예: new Buffer(0))

.Boolean(예: false)

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

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

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

.Schema.Types.Decimal128

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

우리는 할 수 있습니다 코드 조각을 통해 스키마를 모델로 변환: mongoose.model(modelName,Schema)

var Blog = mongoose.model('Blog', blogSchema);
로그인 후 복사

스키마 메서드를 할당합니다. 메서드가 모델로 변환되면 해당 메서드가 Model

//创建一个变量,Schema
var animalSchema = new Schema({ name: String, type: String });

//将方法赋予这个Schema
animalSchema.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
});
로그인 후 복사

에 부여됩니다. 화살표 기능을 사용하지 마십시오. 이를 다시 바인딩합니다.

스키마 정적(정적) 방법을 제공하면 위의 예를 계속 사용합니다.

//赋予静态方法,可以再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);
});
로그인 후 복사

스키마 인덱스 인덱스

MongoDB는 보조 인덱스를 지원합니다. 몽구스에서는 스키마 계층에서 인덱스를 설정할 수 있습니다.

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

animalSchema.index({ name: 1, type: -1 }); // 声明在schema层
로그인 후 복사

인덱스(보조 인덱스)를 사용할 때는 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 });
로그인 후 복사

Virtualization

// 声明一个Schema
var personSchema = new Schema({
    name: {
      first: String,
      last: String
    }
});

// 转成Model
var Person = mongoose.model('Person', personSchema);

// 实例化Model
var 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
로그인 후 복사

Alias

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' }
로그인 후 복사

모델 및 문서

Add

var Tank = mongoose.model('Tank', yourSchema);

var small = new Tank({ size: 'small' });
//使用save的方法
small.save(function (err) {
  if (err) return handleError(err);
  // saved!
});

// 或者 使用create

Tank.create({ size: 'small' }, function (err, small) {
  if (err) return handleError(err);
  // saved!
});

// 或者 使用insertMany/insertOne
Tank.insertMany([{ size: 'small' }], function(err) {

});
로그인 후 복사

Delete

//deleteOne 或者 deleteMany
Tank.deleteOne({ size: 'large' }, function (err) {
  if (err) return handleError(err);
  // 只删掉符合项的第一条
});
로그인 후 복사

Change

Tank.updateOne({ size: 'large' }, { name: 'T-90' }, function(err, res) {

});

// findOneAndUpdate 查找出相应的数据,修改,并返还给程序
로그인 후 복사

Check

// 查提供了多种方式,find,findById,findOne,和where
Tank.find({ size: 'small' }).where('createdDate').gt(oneYearAgo).exec(callback);
로그인 후 복사

더 많은 프로그래밍 관련 지식을 보려면 다음 사이트를 방문하세요. 프로그래밍 비디오 ! !

위 내용은 Nodejs의 몽구스 도구에 대해 자세히 알아보세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:cnblogs.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿