avant-propos
Remarque :
- Je pense personnellement que les documents chinois ne conviennent qu'à l'apprentissage et à la référence, et que les documents anglais conviennent vraiment à une utilisation dans des projets
- Parce que les documents chinois peuvent ne pas avoir été synchronisés avec les derniers documents sur le site officiel.
- Par exemple, la version du document chinois est 5.x, mais la dernière version du document du site Web officiel est 7.x. L'API ne prend plus en charge les rappels et est remplacée par Promise. Si la démo du document chinois est utilisée, diverses erreurs se produiront. jeté.
référence opérateur
Référence de l'opérateur - https://www.mongodb.com/docs/manual/reference/operator/query/gte/
- Adresse alternative - https://www.mongodb.com/docs/manual/reference/operator/query/gte/
numéro de version
mongodb v6.0.5
mongoose v7.1.1
documentation chinoise mangouste - http://mongoosejs.net/docs/guide.html
documentation anglaise mongoose - https://mongoosejs.com/docs/subdocs.html
configuration rapide
-
configuration
"type": "module"
- soutien
- Prise en charge de l'utilisation des importations es6 -
import mongoose from "mongoose"
- Prise en charge des références d'attente de niveau supérieur
- Prise en charge de l'utilisation des importations es6 -
- S'il n'est pas configuré, l'importation es6 n'est pas prise en charge, utilisez uniquement
const mongoose= require( "mongoose")
- Si elle n'est pas configurée, la référence d'attente de niveau supérieur n'est pas prise en charge
- soutien
-
Configuration de référence - focus sur la cinquième ligne
package.json
{
"name": "myui",
"version": "0.0.0",
"private": true,
"type": "module",
"scripts": {
"dev": "vite --host 0.0.0.0",
"build": "vite build",
"preview": "vite preview"
},
"dependencies": {
"mongoose": "^7.1.0",
"vue": "^3.2.45",
"vue-router": "^4.1.6",
},
"devDependencies": {
"vite": "^4.0.1"
}
}
base de données de liens de mangouste
src/service/dbcontent.js
import mongoose from "mongoose"
const db = mongoose.connect('mongodb://127.0.0.1:27017/test')
db.then(mg=> {
// 其实参数mg就是mongoose对象
const {
Schema } = mg
console.log(mongoose === mg)//true
console.log(mongoose.Schema === Schema)//true
}, err => console.log(err))
- Mot de passe, plus de référence de lien - https://mongoosejs.com/docs/connections.html
- Dans la plupart des cas, la fonctionnalité de lien de base de données doit être exportée en tant que module
Exporter:
src/service/dbcontent.js
import mongoose from "mongoose"
const db = mongoose.connect('mongodb://127.0.0.1:27017/test')
export default db
Utilisation :
point clé : l'importation import db from "./dbcontent.js"
doit ajouter un suffixe .js
et un chemin relatif./
- L'importation de la manière suivante signalera une erreur
import db from "./dbcontent"
pas.js
de suffixeimport db from "dbcontent.js"
pas de chemin relatif./
import db from "/dbcontent.js"
pas de chemin relatif./
import db from "@/dbcontent.js"
seul chemin relatif./
Référence d'attente de niveau supérieur
- Référence d'attente de haut niveau - http://t.csdn.cn/eVeFT
- Adresse alternative - http://t.csdn.cn/eVeFT
src/service/app.js
import db from "./dbcontent.js"
const mg = await db
const {
Schema } = mg
const conn = mg.connection
console.log('数据库已连接')
modèle et schéma
- model(colName,data) - le modèle à créer
- colName nom de la collection, si la base de données n'a pas de nom de collection spécifié, elle sera créée automatiquement
- type : Chaîne
- données données ajoutées
- type : [Objet, Tableau]
- colName nom de la collection, si la base de données n'a pas de nom de collection spécifié, elle sera créée automatiquement
- Schema(config) - règles de création de modèles
- config - configuration des règles
- type : Objet
- config - configuration des règles
Il doit y avoir une règle de schéma avant de créer un modèle
- Le schéma est le type de données du modèle spécifié
- Si le modèle créé ne correspond pas aux règles de schéma spécifiées, une erreur sera signalée
demo.js
// 连接数据库
import mongoose from "mongoose"
const db = mongoose.connect('mongodb://127.0.0.1:27017/test')
// mg -> mongoose
const mg = await db //等待数据库连接
const {
Schema } = mg //获取Schema
const conn = mg.connection //获取connection连接方法
// 1. 创建Schema(制定规则)
const userSchema = new Schema(
{
name: String
}
)
// 2. 创建model,并在集合users中使用userSchema规则
const UserModel = mg.model('users', userSchema)
// 3. 使用UserModel创建实例
const user = new UserModel(
{
name: '我是老6呀'
}
)
// 4. 保存创建的实例,保存失败会报错,成功将返回结果
const userSaveStatu = await user.save()
// 查看创建结果
console.log(userSaveStatu)
// 5. 关闭数据库连接
conn.close()
- environnement de nœud en cours d'exécution
augmenter
- Le schéma peut être imbriqué directement
// 在集合users增加数据
const UserModel = mg.model('users', new Schema({
age: {
type: Number,//数据类型为Number
min: 6,//最小值
max: 251//最大值
},
name: {
type: String,
trim: true,//是否清空字符串首尾空格
minlength: 2,//字符串最小长度
maxlength: 20//字符串最大长度
},
sex: {
type: Number,
enum: [0, 1],//枚举
default: 1//默认值
}
}))
// 保存
const createUser = await new UserModel({
age: Math.round(Math.random() * (251 - 6)) + 6,
name: '小米呀',
sex: Math.round(Math.random())
}).save()
console.log(createUser)
// 关闭连接
conn.close()
Résultats d'exécution de l'environnement de nœud
删(deleteMany || supprimerUn)
const UserModel = mg.model('users', new Schema(
{
userName: String,
pas: String,
// 嵌套的文档
posts: [
new Schema(
{
data: String
}
)
]
}
))
// 删除一个
const delUser = await UserModel.deleteOne({
userName: '小林同学' })
// 删除多个 删除age大于等于18的数据
const delMore = await UserModel.deleteMany({
age: {
$gte: 18 } })
console.log(delUser)
console.log(delMore)
// 关闭连接
conn.close()
- résultat d'impression
- reconnu
- vrai supprimé avec succès
- fausse suppression a échoué
- deleteCount nombre supprimé
- reconnu
{
acknowledged: true, deletedCount: 1 }
{
acknowledged: true, deletedCount: 2 }
Commandes courantes
- conn.dropDatabase(dbName) - supprime une base de données
- dbName nom de la base de données
- type : Chaîne
- valeur de retour
- Promesse
- dbName nom de la base de données
// 删除test数据库
const delDb = await conn.dropDatabase('test')
console.log(delDb);
- conn.dropCollection(colName) - supprime une base de données
- nom de la collection colName
- type : Chaîne
- valeur de retour
- Promesse
- nom de la collection colName
// 删除store集合
const delCol = await conn.dropCollection('store')
console.log(delCol);
événement de connexion à la base de données de connexion
connecting
Lorsque la base de données est initialement liéeconnected
Lorsque la connexion à la base de données est réussie ou lorsque la connexion est perdue et reconnectée. comme quand je vais à la voiture, quand je mets la clé dans la voitureopen
La base de données est connectée et peut être exploitée. Tout comme quand je vais conduire, la voiture a déjà démarré, et quand j'appuie sur l'accélérateur, je peux courirdisconnected
Lorsque la connexion à la base de données est perdue, cela peut être le résultat d'un code fermant explicitement la connexion, d'une panne du serveur de base de données ou d'un problème de connexion réseau. C'est comme si ma voiture s'arrêtait soudainement en roulant.close
Lorsque la base de données est fermée avec succès. Comme quand j'éteins la voiture et tire la cléreconnected
Lorsque la connexion à la base de données est perdue et reconnectée avec succès. C'est comme quand ma voiture a été éteinte pendant la conduite et que j'ai redémarré la voiture.error
erreur de connexionall
Lorsqu'il est connecté à un jeu de répliques et que Mongoose s'est connecté avec succès à tous les serveurs spécifiés dans la chaîne de connexion
demo.js
import mongoose from "mongoose"
const readUrl = 'mongodb://jxzr:[email protected]:27017/juxianz'
const db = mongoose.connect(readUrl )
conn.on('close',res=>console.log('关闭'))
setTimeout(() => {
conn.close()
}, 1000)