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)新 ...
随机推荐
- JDK源码学习--String篇(四) 终结篇
StringBuilder和StringBuffer 前面讲到String是不可变的,如果需要可变的字符串将如何使用和操作呢?JAVA提供了连个操作可变字符串的类,StringBuilder和Stri ...
- EAX、ECX、EDX、EBX寄存器的作用(转)
一般寄存器:AX.BX.CX.DXAX:累积暂存器,BX:基底暂存器,CX:计数暂存器,DX:资料暂存器 索引暂存器:SI.DISI:来源索引暂存器,DI:目的索引暂存器 堆叠.基底暂存器:SP.BP ...
- cocos2d-x学习日志(12) --弹出对话框的设计与实现
我们时常需要这么些功能,弹出一个层,给与用户一些提示,这也是一种模态窗口,在没有对当前对话框进行确认的时候,不能继续往下操作. 功能分析 我们设计一个对话框,对话框上有几个按钮(个数可定制),当然有个 ...
- Linux同平台Oracle数据库整体物理迁移
Linux同平台数据库整体物理迁移需求:A机器不再使用,要将A机器的Oracle迁移到B机器.之前写过类似需求的文章: http://www.linuxidc.com/Linux/2015-05/11 ...
- SendMessage发送WM_COMMAND消息控制另一个程序的某一个按钮
procedure TfrmMain.btnSendClick(Sender: TObject); var hCalc, h1: Cardinal; begin WinExec('calc', SW_ ...
- dataguard dubugs
alter database open read only;alter database open read only*ERROR at line 1:ORA-10456: cannot open s ...
- Michael Kors成了时尚行业的公敌-股票频道-和讯网
Michael Kors成了时尚行业的公敌-股票频道-和讯网 Michael Kors成了时尚行业的公敌 字号 评论 邮件 纠错 2014年03月03日17:32 来源:财经天下 全球消费不 ...
- Java图形化界面设计——容器(JFrame)
Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构 ...
- fastDFS同步问题讨论
一.文件同步延迟问题 前面也讲过fastDFS同组内storage server数据是同步的, Storage server中由专门的线程根据binlog进行文件同步.为了最大程度地避免相互影响以及出 ...
- 【Android界面实现】信息更新小红点显示——自己定义控件BadgeView的使用介绍
在如今大部分的信息公布类应用,都有这样的一个功能:当后台数据更新,比方有系统消息或者是用户间有互动的时候,通过在控件上显示一个小红点来提示用户有新的信息.一般来说,这样的业务需求,我们能够在布局文件里 ...