Node.mongoose
简介
mongodb是一款面向文档的数据库,不是关系型数据库,新手熟悉mysql、sqlserver等数据库的人可能入手稍微困难些,需要转换一下思想,可以不需要有固定的存储模式,以文档模型为存储内容相对有更好的扩展性,给我的感觉它更像是一个方便的javascript扩展单元,因为现在我所知的一些功能都可以靠js脚本实现并在数据库中执行。更多查看mongodb官网
命令
mongodb在终端中通过输入命令可查看数据库信息及操作相关数据。
1.show dbs :数据库列表
2.db :当前数据库
3.db.help()/db.xx.help() :帮助,帮助中会列出当前可执行的所有方法名称及简介。
4.网上收集的一些 mongodb基本命令
Node操作mongodb
安装mongoose
1.安装Node和mongodb数据库。
2.打开命令行 执行 npm 命令:
npm install mongoose -g
连接数据库
//获取mongoose模块
var mongoose = require('mongoose');
///获取本地mongodb连接
//connect和createConnection都接受mongodb数据库连接,支持URI或者参数(host,database,port)的形式。
var conn = mongoose.connect('mongodb://localhost/数据库名称');
定义模型
//定义User模型 类似于MVC中的Model
var 模型 = new Schema({
字段名称 : { type: 类型 }
//...
});
mongoose.model(模型名称, 模型);
访问模型
//这里的模型为数据库直接操作的对象
var mongoSchema = mongoose.model(模型名称);
CRUD
1.添加新数据
//实例化数据模型
var schermaName = new mongoSchema();
//为模型成员赋值
schermaName.字段 = 值;
//...
//执行保存操作
schermaName.save(function(err){
if (err) {
console.log(err);
}
console.log('save success');
});
2.查找
//查找数据
//单条查找使用findone() 返回查找结果集中的第一条数据
schermaName.find({key:value},function(err,docs){
console.log(docs);
});
3.修改数据
schermaName.update(定位数据:{key:value},更改值);
4.删除数据
schermaName.remove(定位数据:{key:value},function(err,docs){
console.log(docs);
});
注意事项
mongoose在与数据库真正建立连接之前便缓存了所有的命令,这就意味着你在定义模型、执行查询时确认与mongodb数据库的连接状态或重新打开数据库连接会抛出异常。
常见异常处理
1.Error: Trying to open unclosed connection.
尝试打开一个没有关闭的数据库连接。(来源:db.open())
接触的还不多,以后有更多的经验继续完善…
Node.mongoose的更多相关文章
- vue+node+mongoose踩过的坑
1.当你在cmd中输入npm run dev的时候,出现这种错误 很有可能是目前的端口被占用了,可以把所有可能用到这个端口号的应用关闭或者你直接改一个新的端口号 修改端口的方法:新打开一个cmd,然后 ...
- node+mongoose使用例子
https://github.com/Aquarius1993/nodeNotes 功能 1. 注册 2. 登录 3. 修改密码 4. 修改头像 5. 获取用户笔记 6. 添加,删除,更新笔记 安装部 ...
- node+mongoose+vue
app.js 入门 let express = require('express'); let app = express(); let allowCrossDomain = function (re ...
- mongoose的promise(转发)
Switching out callbacks with promises in Mongoose Published on July 28, 2015 mongo node mongoose pro ...
- node.js学习的资源整理
node中文社区 Node.js专业中文社区:https://cnodejs.org/ node文档 node.js 中文api :http://nodeapi.ucdok.com/ node.js入 ...
- [Mongo] 解决mongoose不支持条件操作符 $gt$gte:$lte$ne $in $all $not
reference : http://blog.sina.com.cn/s/blog_4df23d840100u25x.html 找到mongoose的安装目录 /usr/local/lib/node ...
- MongoDB 驱动以及分布式集群读取优先级设置
本文主要介绍使用MongoDB C驱动读取分布式MongoDB集群时遇到的坑,主要在读取优先级和匹配tag上:同时简单介绍Python驱动.Node.js驱动.Mongoose驱动如何使用读取优先级和 ...
- nodejs mongodb 查询要看的文章
http://www.cnblogs.com/refactor/archive/2012/07/30/2591344.html 数组很大多数情况下可以这样理解:每一个元素都是整个键的值. db.use ...
- vue的项目初始化
1.创建文件 blog 2.下载安装node mongoose 3.(1)vue创建后端项目文件 vue create admin (2)vue创建前端项目文件 vue create web (3)新 ...
随机推荐
- javaTemplates-学习笔记二
配置PlayFramework环境 下载jar包[Play with Activator],这一步有点晕是JAVA程序员CMD执行的步骤;运行了jar包下载了很多配置文件什么的,有的资源没有VPN链接 ...
- spoj 10606 Balanced Numbers 数位dp
题目链接 一个数称为平衡数, 满足他各个数位里面的数, 奇数出现偶数次, 偶数出现奇数次, 求一个范围内的平衡数个数. 用三进制压缩, 一个数没有出现用0表示, 出现奇数次用1表示, 出现偶数次用2表 ...
- ElasticSearch D3
http://www.elasticsearch.org/blog/data-visualization-elasticsearch-aggregations/
- 解析ECC与RECC内存之间的区分
普通的定义上区分:内存,是连接CPU 和其他设备的通道,起到缓冲和数据交换作用.当CPU在工作时,需要从硬盘等外部存储器上读取数据,但由于硬盘这个“仓库”太大,加上离CPU也很“远”,运输“原料”数据 ...
- openStack deep dive,Retake Policy
Method of Payment: visa MasterCard American Express Discover
- DOM ISO - get current element's XPATH
DOM ISO - get current element's XPATH DOM ISO - get current element's XPATH
- java开发工具比较(16个工具修订版)
1.JDK (Java Development Kit)Java开发工具集 SUN的Java不仅提了一个丰富的语言和运行环境,而且还提了一个免费的Java开发工具集(JDK).开发人员和最终用户可以利 ...
- Cube Stacking(并差集深度+结点个数)
Cube Stacking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 21567 Accepted: 7554 Ca ...
- 发送请求工具—Advanced REST Client
Advanced REST Client是Chrome浏览器下的一个插件,通过它能够发送http.https.WebSocket请求.在Chrome商店下搜索Advanced REST Client, ...
- 有感PMI Exam Dev Workshop
有幸參加了PMI协会在上海举办的PMI Exam Development Workshop活动.这是PMI协会第二次在中国举办此活动,上一次是2009年北京. 我第一次參加,感觉收获非常多. 我们知道 ...