Node.js MongoDB driver Mongoose basic usage tutorial_node.js
Using mongoose allows us to better use the mongodb database without writing cumbersome business logic.
Installation
npm install mongoose
Initialize using
Before using mongoose, you need to install node and mongodb. The installation methods of node and mongodb are not discussed here.
var mongoose = require("mongoose"); var Schema = mongoose.Schema; var db = mongoose.connection; mongoose.connect('mongodb://localhost/animal'); db.on('error', console.error); db.once('open', function() { //这里建立模式和模型 }
Quick Start
In mongoose, all data is a schema, and each schema is mapped to a mongodb collection and defines the collection file structure.
//这里建立一个动物的模式,所有动物都拥有这个模式下的所有属性 var animalSchema = new Schema({ name: String, age: Number, });
A model is a diverse constructor we define from Schema. Instances of a model can use many operations. All document creation and retrieval are handled by the model
var animalMode = db.model('Animal', animalSchema);
The instance of the model is essentially a file, and we can easily create and modify such files
var cat = new animalMode({ name: 'catName', age: '7', //这里依然使用字符串,mongoose会自动转换类型 }); cat.save(function(err, thor) { if (err) return console.log(err); console.log(thor); }); //或者可以使用create //cat.create(function(err, thor) { // if (err) return console.log(err); // console.log(thor); //}); //执行查找 animalMode.find(function(err, people){ if(err) console.log(err); console.log(people); }); //查找符合条件数据 animalMode.findOne({title: 'catName'}, function(err, cat){ if(err) console.log(err); console.log(cat); });
Schema
Data type
These are all data types in Schema, including mongoose’s custom data types
- String
- Number
- Date
- Buffer
- Boolean
- Mixed
- ObjectId
- Array
Usage of each data type
var animalMode = mongoose.model('Animal', schema); var cat = new animalMode; cat.name = 'Statue of Liberty' //String cat.age = '7'; //Number cat.updated = new Date; //Date cat.binary = new Buffer(0); //Buffer cat.living = false; //Boolean cat.mixed = { any: { thing: 'i want' } }; //Mixed cat._someId = new mongoose.Types.ObjectId; //ObjectId cat.ofString.push("strings!"); //Array
Mixed is a mixed type customized by mongoose. Because Mixed does not define specific content, it can be used with {}. The following two definition forms are equivalent.
var animalSchema = new Schema({any: {}}); var animalSchema = new Schema({any: {Schema.Types.Mixed}});
Custom method
You can bind methods to Schema
var animalSchema = new Schema({ name: String, age: Number, }); animalSchema.methods.findSimilarTypes = function (cb) { return this.model('Animal').find({ name: this.name }, cb); } var animalMode = db.model('Animal', animalSchema); cat.findSimilarTypes(function(err, cat){ if(err) console.log(err); console.log(cat); });
You can also add static methods to Schema
animalSchema.statics.findByName = function (name, cb) { return this.find({ name: new RegExp(name, 'i') }, cb); } var animalMode = db.model('Animal', animalSchema); animalMode.findByName('catName', function (err, animals) { console.log(animals); });
Index
We can index mongodb data. Mongodb supports secondary indexes. In order to improve data search and positioning, it is necessary to establish a composite index
var animalSchema = new Schema({ name: String, age: Number, tags: { age: [String], index: true } // field level }); animalSchema.index({ name: 1, age: -1 }); // schema level
However, the establishment of this kind of index may cause significant performance impact. It is recommended to stop it in production and set the automatic indexing in setup mode to false to disable
animalSchema.set('autoIndex', false); // or new Schema({..}, { autoIndex: false });
Model
C
cat.save(function(err, thor) { if (err) return console.log(err); console.log(thor); }); //或者可以使用create cat.create(function(err, thor) { if (err) return console.log(err); console.log(thor); });
R
//find animalMode.find(function(err, cat){ if (err) console.log(err); console.log(cat); }) //findOne animalMode.findOne({name: 'catName'}, function(err, cat){ if (err) console.log(err); console.log(cat); }) //findByID //与 findOne 相同,但它接收文档的 _id 作为参数,返回单个文档。_id //可以是字符串或 ObjectId 对象。 animalMode.findById(id, function(err, adventure){ if (err) consoel.log(err); console.log(adventure); }); //where //查询数据类型是字符串时,可支持正则 animalMode.where('age', '2').exec(function(err, cat){ if (err) console.log(err); console.log(cat); }); animalMode .where('age').gte(1).lte(10) .where('name', 'catName') .exec(function(err, cat){ if (err) console.log(err); console.log(cat); });
U
The update function Model.update provided by the official documentation
Model.update(conditions, doc, [options], [callback])
- conditions update conditions
- doc updated content
- option update option
- safe (boolean) safe mode, default option, value is true
- upsert (boolean) Whether to create a new document when the conditions do not match, the default value is false
- multi (boolean) whether to update multiple files, the default value is false
- strict (boolean) strict mode, only update one piece of data
- overwrite (boolean) overwrite data, default is false
- callback
- err value returned when there is an error in updating data
- numberAffected (I don’t know yet)
- rawResponse Number of rows affected
animalMode.update({name: 'catName'}, {age: '6'}, {multi : true}, function(err, numberAffected, raw){ if (err) return console.log(err); console.log('The number of updated documents was %d', numberAffected); console.log('The raw response from Mongo was ', raw); });
D
animalMode.remove({age: 6}, function(err){ if (err) console.log(err); })
Others
//Return the number of documents
animalMode.count({age: 2}, function(err, cat){ if (err) console.log(err); console.log(cat); })

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

.NET 4.0 is used to create a variety of applications and it provides application developers with rich features including: object-oriented programming, flexibility, powerful architecture, cloud computing integration, performance optimization, extensive libraries, security, Scalability, data access, and mobile development support.

Go and Node.js have differences in typing (strong/weak), concurrency (goroutine/event loop), and garbage collection (automatic/manual). Go has high throughput and low latency, and is suitable for high-load backends; Node.js is good at asynchronous I/O and is suitable for high concurrency and short requests. Practical cases of the two include Kubernetes (Go), database connection (Node.js), and web applications (Go/Node.js). The final choice depends on application needs, team skills, and personal preference.

This article introduces how to configure MongoDB on Debian system to achieve automatic expansion. The main steps include setting up the MongoDB replica set and disk space monitoring. 1. MongoDB installation First, make sure that MongoDB is installed on the Debian system. Install using the following command: sudoaptupdatesudoaptinstall-ymongodb-org 2. Configuring MongoDB replica set MongoDB replica set ensures high availability and data redundancy, which is the basis for achieving automatic capacity expansion. Start MongoDB service: sudosystemctlstartmongodsudosys

This article describes how to build a highly available MongoDB database on a Debian system. We will explore multiple ways to ensure data security and services continue to operate. Key strategy: ReplicaSet: ReplicaSet: Use replicasets to achieve data redundancy and automatic failover. When a master node fails, the replica set will automatically elect a new master node to ensure the continuous availability of the service. Data backup and recovery: Regularly use the mongodump command to backup the database and formulate effective recovery strategies to deal with the risk of data loss. Monitoring and Alarms: Deploy monitoring tools (such as Prometheus, Grafana) to monitor the running status of MongoDB in real time, and

It is impossible to view MongoDB password directly through Navicat because it is stored as hash values. How to retrieve lost passwords: 1. Reset passwords; 2. Check configuration files (may contain hash values); 3. Check codes (may hardcode passwords).

When developing an e-commerce website, I encountered a difficult problem: how to provide users with personalized product recommendations. Initially, I tried some simple recommendation algorithms, but the results were not ideal, and user satisfaction was also affected. In order to improve the accuracy and efficiency of the recommendation system, I decided to adopt a more professional solution. Finally, I installed andres-montanez/recommendations-bundle through Composer, which not only solved my problem, but also greatly improved the performance of the recommendation system. You can learn composer through the following address:

Detailed explanation of MongoDB efficient backup strategy under CentOS system This article will introduce in detail the various strategies for implementing MongoDB backup on CentOS system to ensure data security and business continuity. We will cover manual backups, timed backups, automated script backups, and backup methods in Docker container environments, and provide best practices for backup file management. Manual backup: Use the mongodump command to perform manual full backup, for example: mongodump-hlocalhost:27017-u username-p password-d database name-o/backup directory This command will export the data and metadata of the specified database to the specified backup directory.

MongoDB and relational database: In-depth comparison This article will explore in-depth the differences between NoSQL database MongoDB and traditional relational databases (such as MySQL and SQLServer). Relational databases use table structures of rows and columns to organize data, while MongoDB uses flexible document-oriented models to better suit the needs of modern applications. Mainly differentiates data structures: Relational databases use predefined schema tables to store data, and relationships between tables are established through primary keys and foreign keys; MongoDB uses JSON-like BSON documents to store them in a collection, and each document structure can be independently changed to achieve pattern-free design. Architectural design: Relational databases need to pre-defined fixed schema; MongoDB supports
