nodejs实践-MongoDB
|
laiqun@msn.cn
|
Contents
1. 特点:
- 使用BSON存储数据
- 支持相对丰富的查询操作
- 支持索引
- 副本集
- 分片
- 无模式
- 部署简单方便
2. 开始使用
检查是否安装 which mongod
创建目录 mkdir -p /data/db
检测磁盘空间是否够用 df -lh
启动
当前进程的方法 mongod –dbpath=/data/db –port=27017
守护进程的方法 mongod –dbpath=/data/db –port=27017 –fork –syslog
日志的查看 tail -f /var/log/message 监控文件的修改 指定日志 –log=
结束后台 kill 进程号
运行客户端 mongo 127.0.0.1:27017
show dbs
use part9
db.users.insert({“username”:“Sid”});
show collections
db.users.find()
db.users.insert({“username”:“Zoe”,“group”:“reporter”});
db.users.find().count();
db.users.insert({“username”:“Zoe”,“group”:“programmer”});
ad.users.find({“_id”:ObjectID(“”)})
//条件 更新内容 更新配置
ad.users.update({“username”:“Zoe”},{$set:{“group”:“writer”},{multi:true}});
//未指定 则属性就没了 必须把所有值指定 条件
db.users.save({“_id”:ObjectId(“xxxx”)},“group”:“reporter”);db.users.remove({“group”:“reporter”})
db.users.remove({“group”:“reporter”},true)//第二个参数是单行删除
db.users.remvoe({})//删除全部文档
db.user.drop();//索引和文档都删除
3. 使用Mongoose操作MongoDB
是一种ORM模块,将对象对应为结果
- 安装 cnpm install mongoose
编写 model.js Model 与 Schema
var mongoose = require('mongoose');
var uri = 'mongodb://username:password@hostname:port/databasename';
uri = "mongodb://localhost/part9";
mongoose.connect(uri);
var BookSchema = new mongoose.Schema({
name:String,
author:String,
publichTime:Date
});
mongoose.model('Book',BookSchema);
编写 insert.js
var mongoose = require('mongoose');
require('./model.js');//将model.js中的代码执行一遍var Book = mongoose.model('Book');//返回Schemavar book = new Book({
name ="sod",
author:"green",
publishTime: new Date()
});
book.author ='Jim';
book.save(funtion(err){
console.log('save states',err?'failed':'success');
});
编写find.js
var mongoose = require('mongoose');
require('./model.js');//将model.js中的代码执行一遍var Book = mongoose.model('Book');//返回Schema
book.find({},funtion(err,docs){
if(err){
console.log('err',err);
return ;
}
console.log('result',docs);
});
编写findone.js
var mongoose = require('mongoose');
require('./model.js');//将model.js中的代码执行一遍var Book = mongoose.model('Book');//返回Schema
book.findOne({author:"Jim"},funtion(err,doc){
if(err){
console.log('err',err);
return ;
}
doc.author = 'Jame';
doc.save();
console.log('findOne result',doc);
});
编写remvoe.js
var mongoose = require('mongoose');
require('./model.js');//将model.js中的代码执行一遍var Book = mongoose.model('Book');//返回Schema//第一个参数为条件
book.findOne({author:"Jim"},funtion(err,doc){
if(err){
console.log('err',err);
return ;
}
if(doc){
doc.remove();
}
});
编写condition.js
var mongoose = require('mongoose');
require('./model.js');//将model.js中的代码执行一遍var Book = mongoose.model('Book');//返回Schema//第一个参数为条件 联合条件var cond = {
$or:[ //or 可以改为and 还有大于小于等操作
{author:"Jane"},
{author:"Jim"}
]
};
book.find(cond,funtion(err,docs){
if(err){
console.log('err',err);
return ;
}
console.log('cond:',cond,'result:',docs)
});
4. 在express中使用,组织数据库相关代码
使用脚手架生成框架
express mongooseExpress
config.js
module.exports ={
mongodb:"mongodb://localhost/part9"
};
编写mongoose.js
var mongoose = require('mongoose');
var config = require('./config.js');
module.exports = function(){
var db = mongoose.connect(config.mongodb);
return db;
}
nodejs实践-MongoDB的更多相关文章
- nodejs和mongodb实践
首先,当然是都安装了nodejs 和mongodb了.这必须是前提条件. 现在我们要用nodejs连接mongodb数据库了.我这里只是一个非常非常简单是实践,初学嘛.更深入的学习之后,我会仔细写笔记 ...
- 大熊君大话NodeJS之------MongoDB模块(额外篇)
一,开篇分析 这篇属于扩展知识篇,因为在下面的文章中会用到数据库操作,所以今天就来说说它(Mongodb模块). (1),简介 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为 ...
- nodejs操作mongodb
一.下载地址 https://www.mongodb.com/download-center#community 二.控制台操作mongodb 1.安装完后添加环境变量. 2.在某个根目录下新建dat ...
- nodejs链接mongodb数据库
nodeJs链接mongodb数据库有两种方式,第一种是利用官方自己开发的npm包mongodb链接,第二种是利用第三方npm包mongoose链接:这里如果是window操作系统,建议用mongoo ...
- nodejs实践-代码组织
nodejs实践-代码组织 laiqun@msn.cn Contents 1. 代码组织 1. 代码组织 更新版本 npm install -g n n latest 项目文件组织 MVC 前后端代码 ...
- Nodejs中Mongodb使用
Mongodb使用 打开解压后的Mongodb文件夹,新建data.logs文件夹,并在logs文件夹中新建mongodb.log文档. 添加后Mongod文件夹示意图: 用cmd命令行启动Mongo ...
- NodeJS+Express+MongoDB
一.MongoDB MongoDB是开源,高性能的NoSQL数据库:支持索引.集群.复制和故障转移.各种语言的驱动程序丰富:高伸缩性:MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言 ...
- NodeJs操作MongoDB之分页功能与常见问题
NodeJs操作MongoDB之分页功能与常见问题 一,方法介绍 1,聚合操作之count count()方法可以查询统计符合条件的集合的总数 db.User.count(<query>) ...
- NodeJs操作MongoDB之多表查询($lookup)与常见问题
NodeJs操作MongoDB之多表查询($lookup)与常见问题 一,方法介绍 aggregate()方法来对数据进行聚合操作.aggregate()方法的语法如下 1 aggregate(ope ...
随机推荐
- C++内存申请容易产生的错误
1.起因 前两天用python写了一款工具用来把excel文件转换成json文件,今天给他们用的时候发现在文本下看正常,但是在程序中使用就是会多出一些莫名其妙的字符. 2. 调查 原来主要是我写的工具 ...
- wcf中的使用全双工通信
wcf中的契约通信默认是请求恢复的方式,当客户端发出请求后,一直到服务端回复时,才可以继续执行下面的代码. 除了使用请求应答方式的通信外,还可以使用全双工.下面给出例子: 1.添加一个wcf类库 2. ...
- 存储过程sql语句
select count(virtualacc) into v_count from T_ATMMONITOR WHERE virtualacc = v_number; 用于存储过程中,是把coun ...
- tomcat的几种配置方式(常用)
https://www.baidu.com url www.baidu.com 主机名 baidu.com 域名 第一种 放在webapp目录下 也可以放在ROOT 根目录下 访问路径 IP:端口 ...
- ZOJ 1967 POJ 2570 Fiber Network
枚举起点和公司,每次用DFS跑一遍图,预处理出所有的答案.询问的时候很快就能得到答案. #include<cstdio> #include<cmath> #include< ...
- 三层交换机配置说明(华为S5700设置三个网段互通)
1.配置Switch # 创建VLAN <HUAWEI> system-view[HUAWEI] sysname Switch[Switch] vlan batch 10 20 30# 配 ...
- dede 转 帝国
1.转换栏目 insert into ak_enewsclass (classid,bclassid,classname,myorder,classpath,intro,classpagekey) s ...
- s7-300 第一讲
s7-300的电源模块可选,s7-400必选
- Inno Setup入门(二)——修改安装过程中的图片
修改安装过程中的图片 一般编译之后,安装过程中出现在左边图片是是下图这个样子的: 其实也可以修改它,只需要在setup段中作一点稍微的修改,加一行代码即可: [setup] AppName=Test ...
- 笨方法学python--变量和命名
1 =(单等号)和==(双等号)的区别 =用来赋值, ==用来判断是否相等 2 x = 100 在操作符2侧加空格,易读 3 打印时,进行字符串拼接 print "there are&quo ...