web总共分为三个部分:
web网站访问过程:
数据库主要分为两种:
下载地址:https://www.mongodb.com/try/download/community
D:\Project\MongoDB\Server\5.0\bin
-> 点击所有确定保存mongod
-> 没有出现不是内部或外部命令说明可以使用了mongo
,连接 mongodb,出现 >
说明启动成功27017
端口65535
数据库服务器里面可以有多个数据库。
下载地址:https://www.mongodbmanager.com/download-mongodb-manager-free
show dbs
、show databases
use test
db
代表当前数据库show collections
db.<集合名>.insert(doc)
db.<集合名>.insertOne(doc)
插入一个文档db.<集合名>.insertMany(doc)
插入多个文档ObjectId()
,确保数据唯一// 向 test 数据库中 person 集合插入一个新数据 {name:"张三",age:"18"}
db.person.insert({name:"张三", age:"18"});
// 多条数据
db.person.insert([
{name:"张三", age:"18"},
{name:"李四", age:"18"},
{name:"赵五", age:"18"}
]);
db.<集合名>.find({})
可以接受一个对象作为条件参数{属性名1:值,属性名2:值}
查询属性是指定值的文档db.<集合名>.findOne({})
用来查询集合中符合条件的第一个文档db.<集合名>.find({}).count()
查询所有结果的数量db.<集合名>.update({查询条件},{新对象},{配置})
默认只修改一个db.<集合名>.updateOne({查询条件},{新对象})
修改一个符合条件的文档db.<集合名>.updateMany({查询条件},{新对象})
同时修改多个符合条件的文档db.<集合名>.replaceOne({查询条件},{新对象})
替换一个符合条件的文档$set
可以修改文档中的指定属性$unset
可以用来删除文档的指定属性db.person.update({name:"张三"},{
$set: {
sex: "男",
address: "幸福村"
}
});
// 修改多个
db.person.update(
{name:"张三"},
{$set: {
sex: "男",
address: "幸福村"
}},
{multi: true}
);
db.person.update({name:"张三"},{
$unset: {
address: "111"
}
});
db.<集合名>.remove({条件})
db.<集合名>.deleteOne({条件})
删除符合条件的一个文档db.<集合名>.deleteMany({条件})
删除符合条件的多个文档db.<集合名>.drop()
删除集合db.dropDatabase()
删除数据库skip((页码-1)*每页显示条数).limit(显示条数)
limit()
用于设置显示数据的上限skip()
用于跳过指定数量的数据sort()
需要传递一个对象指定排序规则,1 为升序,-1 为降序
db.user.find({}).sort({_id:1,name:-1})
db.user.find({},{name:1,_id:0})
$gt
大于$gte
大于等于$lt
小于$lte
小于等于官方地址:http://www.mongoosejs.net/
npm install mongoose
命令下载const mongoose = require('mongoose');
引入 mongoosemongoose.connect('mongodb://localhost/user_manage');
mongoose.connection.once('open',function(){})
数据库连接成功事件mongoose.connection.once('close',function(){})
数据库连接断开事件mongoose.disconnect()
断开数据库连接(一般不使用)
const Schema = mongoose.Schema;
// 创建 Schema(模式)对象
let stuSchema = new Schema({
name: String,
age: Number,
sex: {
type: String,
default: '男'
},
address: String
});
// 通过 Schema 来创建 Model
// Model 代表的是数据库中的集合,通过 Model 才能对数据库进行操作
// mongoose.model(modelName, Schema);
// modelName 是要映射的集合名
// mongoose 会自动将集合名变成复数
let StuModel = mongoose.model('student', stuSchema);
// 向数据库中插入一个文档
// StuModel.create(doc, function(err){});
StuModel.create({
name: '孙悟空',
age: 18,
sex: '男',
address: '花果山'
}, function(err){
if(!err){
console.log('插入成功');
}
});
Model.create(doc(s), [callback])
创建一个或多个文档并添加到数据库中
doc(s)
可以是一个文档对象,也可以是一个对象数组callback
操作完成以后调用的回调函数StuModel.create({
name: '孙悟空',
age: 18,
sex: '男',
address: '花果山'
}, function(err){
if(!err){
console.log('插入成功');
}
});
Model.find(conditions, [projection], [options], [callback])
查询所有符合条件的文档Model.findById(id, [projection], [options], [callback])
根据文档id属性查询文档Model.findOne([conditions], [projection], [options], [callback])
查询符合条件的第一个文档
conditions
查询条件projection
投影 需要获取的字段
{name: 1, _id: 0}
"name age -_id"
options
查询选项(skip
limit
)callback
回调函数。查询结果结果会通过回调函数返回,参数必选,不传没有返回值
find()
查询的结果,返回的对象就是 Document,文档对象doc instanceof StuModel
StuModel.find({ name: '孙悟空' }, { name: 1, _id: 0 }, { skip: 2, limint: 10 }, function (err, docs) {
if (!err) {
console.log(docs);
}
});
Model.update(conditions, doc, [options], [callback])
Model.updateMany(conditions, doc, [options], [callback])
Model.updateOne(conditions, doc, [options], [callback])
conditions
查询条件doc
修改后的对象options
配置参数callback
回调函数Model.replaceOne(conditions, doc, [options], [callback])
StuModel.updateOne({ name: '张三' }, { $set: { age: 20 } }, function (err) {
if (!err) {
console.log('修改成功');
}
});
Model.remove(conditions, [callback])
Model.deleteOne(conditions, [callback])
Model.deleteMany(conditions, [callback])
conditions
查询条件callback
回调函数StuModel.remove({ name: '张三' }, function (err) {
if (!err) {
console.log('删除成功');
}
});
Model.count(conditions, [callback])
Model.count({ name: '张三' }, function (err, count) {
if (!err) {
console.log(count);
}
});
Model#save([options], [fn])
保存文档对象// 创建一个Document
let stu = new StuModel({
name: '孙悟空',
age: 18,
sex: '男',
address: '花果山'
});
// Document 方法
stu.save(function(err){
if(!err){
console.log('插入成功');
}
});
StuModel.findOne({}, function (err, doc) {
if (!err) {
console.log(doc);
// 修改方式1
doc.update({$set:{age:20}},function(err){
if(!err){
console.log('修改成功');
}
})
// 修改方式2
doc.age = 20;
doc.save();
// 删除
doc.remove(function(err){
if(!err){
console.log('删除成功');
}
});
// 获取属性值
console.log(doc.get('age'));
console.log(doc.age);
// 设置属性值
doc.set('name', '张小三');
doc.name = '张小三';
// 获取 _id 值
doc._id
}
});
// tools/conn_mongo.js
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/user_manage');
mongoose.connection.once('open', function () {
console.log('数据库连接成功');
})
// index.js
require('./tools/conn_mongo');
// models/student.js
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const stuSchema = new Schema({
name: String,
age: Number,
sex: {
type: String,
default: '男'
},
address: String
});
// 定义模型
const StuModel = mongoose.model('student', stuSchema);
module.exports = StuModel;
// index.js
let stu = require('./models/student');
stu.find({}, function(err, docs){
if(!err){
console.log(docs);
}
})