从零开始优雅的使用mongodb实例

基本连接

一、创建express工程testmon

express testmon

二、精简app.js

var express = require("express");
var app = express();
app.get(‘/‘, function(req, res) {
    res.send(‘访问一次增加一条数据‘);
});

var server = app.listen(3000,function(){
    console.log("请在浏览器访问:http://localhost:3000");
});

三:进入工程目录安装mongoose并引入依赖:

npm install --save mongoose

四、修改app.js

var express = require("express");
var app = express();
app.get(‘/‘, function(req, res) {
res.send(‘Hello, tinyphp‘);
});
var server = app.listen(3000,function(){
    console.log("请在浏览器访问:http://localhost:3000");
});

//引入mongoose模块
var mongoose = require(‘mongoose‘);
//创建数据库连接
var db=mongoose.connect(‘mongodb://localhost:27017/test‘);

//检查是否连接成功
db.connection.on("error",function(error){
    console.log("数据库连接失败:"+error);
});

db.connection.on("open",function(error){
    console.log("++++++数据库连成功++++++");
});

/*****Schema使用*****/

//定义kitty属性
var kittySchema = mongoose.Schema({
    name: String
});
//将该Schema发布为Model,第一个参数为集合名
var kittyModel = mongoose.model(‘kitty‘, kittySchema);

//用module创建kitty实体
var kittyEntity = new kittyModel({ name: ‘tinyphp99‘ });

//保存数据
kittyEntity.save(function (err) {
  if (err) {
    console.log(err);
  } else {
    console.log(‘成功插入数据‘);
  }
});
/************/

打开另外一个cmd窗口,先查询一次数据,然后重新启动工程,再查询一次数据发现数据成功添加上了

分离改造

下面我们把它改装为一访问http://localhost:3000/add就自动添加数据,思路

config.js 数据库配置信息

module.exports={
    mongodb:"mongodb://localhost:27017/test"
}

mongoose.js 数据库连接文件

//引入mongoose模块
var mongoose = require(‘mongoose‘);
var config=require(‘./config.js‘);

module.exports=function(){
    //创建数据库连接
var db=mongoose.connect(config.mongodb);
//检查是否连接成功
db.connection.on("error",function(error){
    console.log("数据库连接失败:"+error);
});

db.connection.on("open",function(error){
    console.log("++++++数据库连成功++++++");
});
require(‘../models/kitty.model.js‘);
return db;
}

kitty.model.js 导出Model用于生成实体

var mongoose =require(‘mongoose‘);
/*****Schema使用*****/

//定义kitty属性
var kittySchema = mongoose.Schema({
    name: String
});

mongoose.model(‘kitty‘,kittySchema);

app.js

var express = require("express");

var mongoose = require(‘./config/mongoose.js‘);
var db=mongoose();

var app = express();

var add=require(‘./routes/add‘);
app.use(‘/add‘,add);

var server = app.listen(3000,function(){
    console.log("请在浏览器访问:http://localhost:3000");
});

add.js 控制访问一次http://localhost:3000/add插入一次数据

var express = require(‘express‘);
var router = express.Router();

var mongoose =require(‘mongoose‘);
var kittyModel=mongoose.model(‘kitty‘);

/* GET home page. */
router.get(‘/‘, function(req, res, next) {
  res.send(‘又添加一条数据‘);
//将该Schema发布为Model,第一个参数为集合名
var kittyModel = mongoose.model(‘kitty‘);

//用module创建kitty实体
var kittyEntity = new kittyModel({ name: ‘new‘ });

//保存数据
kittyEntity.save(function (err) {
  if (err) {
    console.log(err);
  } else {
    console.log(‘成功插入数据‘);
  }
});

});

module.exports = router;

路由里因为用到kittyModel所以引入要在mongoose初始化后,不然会提示出错“Schema hasn‘t been registered ...”, 自己把上面的顺序调换测试下更深刻噢~

温馨提示:测试多了,不妨使用db.table.drop() 把整个集合删除掉噢

相关文章:

安装express并创建工程

window平台安装MongoDB

下载地址

时间: 2024-10-07 04:17:50

从零开始优雅的使用mongodb实例的相关文章

zabbix根据主机和端口列表自动发现监控远程MongoDB实例

在有些情况下,只能使用远程的MongoDB实例而不能登录到MongoDB实例所在的服务器上,这时可以在一台服务器上维护一个远程MongoDB实例的主机和端口列表,然后通过zabbix的自动发现功能去根据主机和端口自动添加相应的监控.

一条命令搞垮MongoDB实例

一条命令搞垮MongoDB实例 背景 Part1:写在最前 在副本集架构中,我们会经常通过rs.add(),rs.remove()命令来调整后台数据库架构,在本案例中,我们异常的触发到了一个MongoDB的BUG,并尽快的找到了官方的人进行咨询.在生产环境中,我们做实例迁移,将研发自行维护的MongoDB副本集迁移至DBA管理,由于硬件和版本都不符合规范,因此我们对集群先进行了升级处理,又使用了rs.add()和rs.remove()来完成数据库的迁移工作. Part2:背景 在研发自行维护的数

PHP操作MongoDB实例

PHP的mongodb扩展安装 1 2 3 4 5 6 # https://github.com/mongodb/mongo-php-driver/archive/master.zip # unzip master.zip # /usr/local/php/bin/phpize # ./config --with-php-config=/usr/local/php/bin/php-config # make # make install 将mongo.so添加到php.ini 1 2 # vim

asp.net的mongodb实例

先记录需要的代码,文章稍后再添加. 1 public class MongoNearby 2 { 3 private static object objLock = new object(); 4 private static MongoDatabase mongo ; 5 6 private static MongoDatabase Instance 7 { 8 get 9 { 10 if (mongo == null) 11 { 12 lock (objLock)//防止多线程构造 13 {

MongoDB改动、删除文档的域属性实例

MongoDB改动.删除文档的域属性实例 在站点的开发中,可能最初的设计不合理.或者后期业务的变更,会造成文档结构会有些无用的属性.须要去删除或改动.因为MongoDB 是无 Schema 的,不像关系数据库那样列属性定义在表而非记录中,MongoDB 的集合中的每一个文档能够拥有各自不同的域属性.MongoDB 中使用 db.collections.update 改动集合中若干文档的域属性,使用 $set 添加域.$unset 删除域. 删除集合中全部文档的一个域 db.posts.updat

Mongodb的主从模式搭建实例

对数据库来说,为了保证数据的安全性和高可用性,往往会采用主从架构模式,对于Mongodb也是如此,这篇文章将讲述一下如何搭建一个简单的Mongodb主从架构模型. 在下面的实例中,因为没有多个服务器的原因,在一台服务器上进行了实验,采用不同的端口号进行区分主从. 首先我们需要的是下载Mongodb的官方版本,这里我下载的是2.4.1的Linux版本,并在Linux下进行解压,然后创建两个文件夹master和slave,分别存放主Mongodb实例和从mongodb实例. 然后我们首先启动mast

MongoDB基础(安装及多实例)

MongoDB简介 MongoDB是一跨平台.面向文档的数据库.可以实现高性能.高可用性,并且能够轻松扩展.是一个基于分布式文件存储的开源数据库系统,在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB也是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.不采用关系模型主要是为了获得更好的扩展性,MongoDB不再有"行"(row)的概念,其运行方式主要基于两个概念:集合(collection)与文档(document). M

MongoDB资料汇总(转)

原文:MongoDB资料汇总 上一篇Redis资料汇总专题很受大家欢迎,这里将MongoDB的系列资料也进行了简单整理.希望能对大家有用. 最后更新时间:2013-04-22 1.MongoDB是什么 MongoDB介绍PPT分享 MongoDB GridFS介绍PPT两则 初识 MongoDB GridFS MongoDB GridFS 介绍 一个NoSQL与MongoDB的介绍PPT MongoDB:下一代MySQL? 写给Python程序员的MongoDB介绍 又一篇给Python程序员的

mongoDB (mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)

MongoDB - 简介 官网:https://www.mongodb.com/ MongoDB 是一个基于分布式文件存储的数据库,由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. MongoDB - 安装及运行 下载 07/05/2017 Current Stable Release (3.4.6) https://www.mongodb.com/dow