zoukankan      html  css  js  c++  java
  • 基于mongoose 的增删改查操作

    无论是基于robomongo 的可视化工具,亦或是基于 mongoose 的函数工具,只要是对 mongodb 的操作,第一步都是开启数据库。

    开启mongodb 数据库

    进入mongod所在目录 执行命令 ./mongod --dbpath=存放数据的位置
    例1:./mongod --dbpath d:MongoDBdb
    例2:./mongod --dbpath d:MongoDBdb --port 自定义端口号,默认27017(了解即可,不推荐使用,修改默认端口号后期维护麻烦)
    
    

    新增数据

    let mongoose = require('mongoose');
    let log = console.log.bind(console);
    let db = null;
    let Schema = mongoose.Schema;
    
    // 链接数据库
    mongoose.connect('mongodb://localhost/fay');
    
    db = mongoose.connection;
    
    db.on('error', console.error.bind(console, 'connection error:'))
    
    db.once('open', (cb) => {
    	// 设置数据库类型
    	let PersonSchema = new Schema({
    		name: {
    			type: 'String',
    			required: true
    		},
    		age: {
    			type: 'Number',
    			retuired: true
    		}
    	});
    
    	// 新建集合(如存在该集合,就选中)
    	let PersonModel = db.model('person', PersonSchema);
    
    	// 需要保存的数据
    	let data = 	{
    		age: 50,
    		name: 'leno'
    	};
    
    	// 实例化集合并插入数据
    	let personEntity = new PersonModel(data);
    
    	//  保存实例
    	personEntity.save((err, res) => {
    		if(err) return log(err);
    		db.close();
    	});
    })
    

    删除数据

    
    let mongoose = require('mongoose');
    let log = console.log.bind(console);
    let db = null;
    let Schema = mongoose.Schema;
    
    // 链接数据库
    mongoose.connect('mongodb://localhost/fay');
    
    db = mongoose.connection;
    
    db.on('error', console.error.bind(console, 'connection error:'))
    
    db.once('open', (cb) => {
    	// 设置数据库类型
    	let PersonSchema = new Schema({
    		name: {
    			type: 'String',
    			required: true
    		},
    		age: {
    			type: 'Number',
    			retuired: true
    		}
    	});
    
    	// 选择集合(如不存在该集合,就新建)
    	let PersonModel = db.model('person', PersonSchema);
    
    	// 删除的条件
    	let del = {name: 'leno'};
    
    	// 删除命令
    	PersonModel.remove(del, (err, res) => {
    		if(err) throw new Error(err);
    
    		log(res);
    		db.close();
    	})
    	
    });
    

    修改数据

    let mongoose = require('mongoose');
    let log = console.log.bind(console);
    let db = null;
    let Schema = mongoose.Schema;
    
    // 链接数据库
    mongoose.connect('mongodb://localhost/fay');
    
    db = mongoose.connection;
    
    db.on('error', console.error.bind(console, 'connection error:'))
    
    db.once('open', (cb) => {
    	// 设置数据库类型
    	let PersonSchema = new Schema({
    		name: {
    			type: 'String',
    			required: true
    		},
    		age: {
    			type: 'Number',
    			retuired: true
    		}
    	});
    
    	// 选择集合(如不存在该集合,就新建)
    	let PersonModel = db.model('person', PersonSchema);
    
    	// 旧数据
    	let oldVal = {name: 'leno'};
    
    	// 新数据
    	let newVal = {name: 'liao'};
    	// 多个新数据
    	let newVal2 = {name: 'liao', age: '25'};
    
    	// 修改(更新)命令
    	PersonModel.update(oldVal, newVal, (err, res) => {
    		if(err) throw new Error(err);
    
    		log(res);
    		db.close();
    	});
    })
    
    

    查询数据

    let mongoose = require('mongoose');
    let log = console.log.bind(console);
    let db = null;
    let Schema = mongoose.Schema;
    
    // 链接数据库
    mongoose.connect('mongodb://localhost/fay');
    
    db = mongoose.connection;
    
    db.on('error', console.error.bind(console, 'connection error:'))
    
    db.once('open', (cb) => {
    	// 设置数据库类型
    	let PersonSchema = new Schema({
    		name: {
    			type: 'String',
    			required: true
    		},
    		age: {
    			type: 'Number',
    			retuired: true
    		}
    	});
    
    	// 选择集合(如不存在该集合,就新建)
    	let PersonModel = db.model('person', PersonSchema);
    
    	// 查询条件
    	let sql = {name: 'liao'};
    
    	// 查询命令
    	PersonModel.find(sql, (err, res) => {
    		if(err) throw new Error(err);
    
    		log(res);
    		db.close();
    	});
    });
    
    

    追加字段

    在已存在的集合中,添加新的字段。schema.add()

  • 相关阅读:
    【BZOJ2424】[HAOI2010]订货 最小费用流
    【BZOJ1935/4822】[Shoi2007]Tree 园丁的烦恼/[Cqoi2017]老C的任务 树状数组
    【BZOJ2500】幸福的道路 树形DP+RMQ+双指针法
    【BZOJ4726】[POI2017]Sabota? 树形DP
    【BZOJ4883】[Lydsy2017年5月月赛]棋盘上的守卫 KM算法
    【BZOJ4881】5月月赛D 线段游戏 树状数组+set
    【BZOJ4518】[Sdoi2016]征途 斜率优化
    【BZOJ4818】[Sdoi2017]序列计数 DP+矩阵乘法
    【BZOJ2553】[BeiJing2011]禁忌 AC自动机+期望DP+矩阵乘法
    【BZOJ3211】花神游历各国 并查集+树状数组
  • 原文地址:https://www.cnblogs.com/fayin/p/6781798.html
Copyright © 2011-2022 走看看