简介

mongodb是一款面向文档的数据库,不是关系型数据库,新手熟悉mysql、sqlserver等数据库的人可能入手稍微困难些,需要转换一下思想,可以不需要有固定的存储模式,以文档模型为存储内容相对有更好的扩展性,给我的感觉它更像是一个方便的javascript扩展单元,因为现在我所知的一些功能都可以靠js脚本实现并在数据库中执行。更多查看mongodb官网

命令

mongodb在终端中通过输入命令可查看数据库信息及操作相关数据。
1.show dbs :数据库列表
2.db :当前数据库
3.db.help()/db.xx.help() :帮助,帮助中会列出当前可执行的所有方法名称及简介。
4.网上收集的一些 mongodb基本命令

Node操作mongodb

安装mongoose

1.安装Nodemongodb数据库
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的更多相关文章

  1. vue+node+mongoose踩过的坑

    1.当你在cmd中输入npm run dev的时候,出现这种错误 很有可能是目前的端口被占用了,可以把所有可能用到这个端口号的应用关闭或者你直接改一个新的端口号 修改端口的方法:新打开一个cmd,然后 ...

  2. node+mongoose使用例子

    https://github.com/Aquarius1993/nodeNotes 功能 1. 注册 2. 登录 3. 修改密码 4. 修改头像 5. 获取用户笔记 6. 添加,删除,更新笔记 安装部 ...

  3. node+mongoose+vue

    app.js 入门 let express = require('express'); let app = express(); let allowCrossDomain = function (re ...

  4. mongoose的promise(转发)

    Switching out callbacks with promises in Mongoose Published on July 28, 2015 mongo node mongoose pro ...

  5. node.js学习的资源整理

    node中文社区 Node.js专业中文社区:https://cnodejs.org/ node文档 node.js 中文api :http://nodeapi.ucdok.com/ node.js入 ...

  6. [Mongo] 解决mongoose不支持条件操作符 $gt$gte:$lte$ne $in $all $not

    reference : http://blog.sina.com.cn/s/blog_4df23d840100u25x.html 找到mongoose的安装目录 /usr/local/lib/node ...

  7. MongoDB 驱动以及分布式集群读取优先级设置

    本文主要介绍使用MongoDB C驱动读取分布式MongoDB集群时遇到的坑,主要在读取优先级和匹配tag上:同时简单介绍Python驱动.Node.js驱动.Mongoose驱动如何使用读取优先级和 ...

  8. nodejs mongodb 查询要看的文章

    http://www.cnblogs.com/refactor/archive/2012/07/30/2591344.html 数组很大多数情况下可以这样理解:每一个元素都是整个键的值. db.use ...

  9. vue的项目初始化

    1.创建文件 blog 2.下载安装node mongoose 3.(1)vue创建后端项目文件 vue create admin (2)vue创建前端项目文件 vue create web (3)新 ...

随机推荐

  1. javascript中this指针的认识

    javascript中上下文环境就是this指针,即被调用函数所处的环境.这个上下文环境在大多数情况下指的是函数运行时封装这个函数的那个对象:当不通过任何对象单独调用一个函数时,上下文环境指的就是全局 ...

  2. SimpleXML 使用详细例子

    要处理XML 文件,有两种传统的处理思路:SAX 和DOM.SAX 基于事件触发机制, 对XML 文件进行一次扫描,完成要进行的处理:DOM 则将整个XML 文件构造为一棵DOM 树,通过对DOM 树 ...

  3. codeforces 292E. Copying Data 线段树

    题目链接 给两个长度为n的数组, 两种操作. 第一种, 给出x, y, k, 将a[x, x+k-1]这一段复制到b[y, y+k-1]. 第二种, 给出x, 输出b[x]的值. 线段树区间更新单点查 ...

  4. 简单OC程序

       Foundation框架头文件的路径 1> 右击Xcode.app --> 显示包内容 2> Xcode.app/Contents/Developer/Platforms/iP ...

  5. printf不同格式表示法

    格式代码 A ABC ABCDEFGH %S A ABC ABCDEFGH %5S ####A ##ABC ABCDEFGH %.5S A ABC ABCDE %5.5S ####A ##ABC AB ...

  6. linux系统性能监控常用命令

      一.Linux服务器性能关注点 1)CPU -> load:表示cpu在一段时间内正在处理以及等待处理的任务之和统计信息,简单可理解为cpu正处理的线程数和能同时处理的线程数的比值.一般认为 ...

  7. Hadoop2.0安装

    http://blog.csdn.net/samhacker/article/details/18802223 http://blog.csdn.net/crazyhacking/article/de ...

  8. 如何使用 Android Studio 的 git hub 功能

    How to use GitHub with Android Studio This article will explain how to use GitHub with Android Studi ...

  9. clistctrl 虚拟列表

    一.什么是虚拟列表控件 虚拟列表控件是指带有LVS_OWNERDATA风格的列表控件.. 二.为什么使用虚拟列表控件 我们知道,通常使用列表控件CListCtrl,需要调用InsertItem把要显示 ...

  10. Android 标签控件

    版本号:1.0 日期:2014.7.24 版权:© 2014 kince 转载注明出处      在有的应用中可能须要设置一些标签来方便用去去查询某些信息,比方手机助手或者购物软件之类都会有一些标签. ...