mongodb

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

1. 安装相关

1.1 下载

官网下载地址 :官网下载社区版

1.2 安装及环境配置

  • 安装

    下载的是 zip 解压到想要的路径即可

  • 配置

    我的电脑 --> 属性 --> 高级系统设置 --> 环境变量 --> 编辑用户变量的 path --> 添加解压mongondb路径下的bin目录即可

1.3 检测

在cmd控制台输入 mongod --version 出现版本信息及安装成功

2. 使用相关

2.1 开启和关闭数据库

  • 启动

    # mongodb 默认使用执行 mongod 命令,会调用当前目录盘符根目录下的 /data/db 文件夹作为数据存储目录
    # 所以如果第一次在新的盘符下执行mongod前应手动创建一个 /data/db 目录
    mongod

    在执行路径根目录下没有 data/db 目录会导致报错 启动失败

    如果想自定义数据存储目录,可以

    mongod --dbpath=你想要的存储的路径
  • 停止

    Ctrl + C 或者直接关闭控制台即可

2.2 连接、退出数据库

  • 连接

    在开启的前提下,再开一个cmd控制台窗口

    执行:

    # 该命令默认连接本机的 MongoDB服务
    mongo

    注意:连接数据库也要保证目录下的data/db 目录存在,否则的话可能会导致连不上

  • 退出

    退出数据库不是关闭数据库

    # 在连接的状态窗口下输入 exit 接口退出
    exit

2.3 基本命令

  • show dbs

    查看显示所有数据库

    > show dbs
    admin 0.000GB
    config 0.000GB
    local 0.000GB

    上面三个数据库是系统数据库,我们最好不要操作他们

  • db

    查看当前操作的数据库

  • use 数据库名称

    切换到指定的数据库,如果没有,则新建

  • 。。。

开发过程中一般不使用黑窗口cmd来操作数据库

3. 在node中使用MongoDB

3.1 使用官方的 mongodb 包来操作

官方mongodb包

里面提供了很多数据库操作的API, 但是对于开发来说,还是相比较为底层,所以开发中也不常用

3.2 使用第三方 mongoose 操作数据库

第三方包,基于MongoDB官方的 mongodb 包又进行了一次封装。

安装

npm install mongoose

hello world

const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test'); const Cat = mongoose.model('Cat', { name: String }); const kitty = new Cat({ name: 'Zildjian' });
kitty.save().then(() => console.log('meow'));

4. mongoose初次使用小demo

4.1 起步 初始化

var mongoose = require('mongoose')

// 数据库中的Schema,为数据库对象的集合
var Schema = mongoose.Schema // 连接数据库
// 指定连接的数据库不需要存在,当你插入第一条数据的之后会自动创建出来
mongoose.connect('mongodb://localhost/mytest') // 设计集合结构
// 约束数据的类型及其他的一些要求 避免脏数据
var userSchema = new Schema({
username: {
type: String,
required: true // 必须有 不能为空
},
password: {
type: String,
required: true
},
email: {
type: String
}
}) // 将文档结构发布为模型
// mongoose.model 方法就是将一个架构发布为 model
// 第一个参数: 传入一个首字母大写名词单数字符串,表示数据库名称
// mongoose 会自动将大写名词的字符串生成 小写复数 的集合名称
// 例如:这里的User 最终会编程 users 集合名称
// 第二个参数: 架构 Schema
// 返回值: 模型构造函数
// 有了这个模型构造函数之后,就可以对 这个集合中的数据 进行我们想要的操作了
var User = mongoose.model('User', userSchema)

4.2 添加数据

save()

...

var admin = new User({
username: 'admin',
password: '123456',
email: 'admin@qq.com'
}) admin.save(function (err, ret) {
if (err) {
console.log('保存失败')
} else {
console.log('保存成功')
console.log(ret)
}
})

这里的输出:

保存成功
{ _id: 5bb87029fb8d521954db7d25,
username: 'admin',
password: '123456',
email: 'admin@qq.com',
__v: 0 }

4.3 查询数据

  • 查询所有

    User.find(function(err, ret) {
    if (err) {
    console.log('error')
    } else {
    console.log(ret)
    }
    })
  • 按条件查询

    User.find({
    // 筛选条件
    username: 'zs' // 筛选出username 为 zs 的数据
    },function (err, ret) {
    if (err) {
    console.log('error')
    } else {
    console.log(ret)
    }
    })
  • 查询一个 findOne

    User.findOne({
    username: 'zs' // 筛选出username 为 zs 的数据
    }, function (err, ret) {
    if (err) {
    console.log('error')
    } else {
    console.log(ret)
    }
    })

    这里查找一个 返回的不再是一个数组,而是一个对象

    找不到即返回 null

    不加筛选条件就返回第一条数据

4.4 删除数据

User.remove({
username: 'admin'
}, function (err) {
if (err) {
console.log('error')
}
})

4.5 更新数据

User.findByIdAndUpdate('5bb87a44b70a9508346d35f9', {
password: '123'
}, function (err) {
if (err) {
console.log('更新失败')
} else {
console.log('更新成供')
}
})

以上的操作只是写简单的基本操作,更加复杂的操作情景可一查看官网api。

mongodb 和 mongoose 初探的更多相关文章

  1. Practical Node.js (2018版) 第5章:数据库 使用MongoDB和Mongoose,或者node.js的native驱动。

    Persistence with MongoDB and Mongoose https://github.com/azat-co/practicalnode/blob/master/chapter5/ ...

  2. MongoDB 和 Mongoose 04

    一.安装 1. 相关 https://www.mongodb.org/dl/win32/ MongoDB的版本偶数版本为稳定版,奇数版本为开发版 MongoDB对于32位系统支持不佳,所以3.2版本以 ...

  3. 【重学Node.js 第3篇】mongodb以及mongoose的使用

    mongodb以及mongoose的使用 本篇为这个系列的第三篇,想看更多可以直接去github的项目:https://github.com/hellozhangran/happy-egg-serve ...

  4. 前端知识点回顾——mongodb和mongoose模块

    mongodb和mongoose模块 数据库 数据库有关系型数据库(MySQL)和非关系型数据库(mongodb),两者的语法和数据存储形式不一样. mySQL 关系型数据库 类似于表格的形式,每一条 ...

  5. mongodb用mongoose取到的对象不能增加属性

    先定义了一个article的schema var mongoose = require('mongoose'); var Schema = mongoose.Schema; exports.schem ...

  6. 前端笔记之NodeJS(四)MongoDB数据库&Mongoose&自制接口&MVC架构思想|实战

    一.MongoDB数据库 1.1 NoSQL简介 随着互联网web2.0网站的兴起,传统的SQL数据库(关系数据库)在应付web2.0网站,特别是超大规模和高并发的SNS(social network ...

  7. MongoDB及Mongoose的记录

    MongoDB是一种NoSQL的文档型数据库,其存储的文档类型都是JSON对象. 在node.js中由于代码都是异步执行,且nosql也没有“事物”这一定义,所以日常使用中很难保证数据库操作的原子性. ...

  8. mongoDB与mongoose

    mongodb是一个基于分布式文件存储的文档型数据库 MongoDB 是一个介于关系数据库和非关系数据库之间的产品 MongoDB 最大的特点是他支持的查询语言非常强大,而且还支持对数据建立索引 官方 ...

  9. [转] mongoDB与mongoose

    mongoDB简介 mongoDB与一些关系型数据库相比,它更显得轻巧.灵活,非常适合在数据规模很大.事务性不强的场合下使用.同时它也是一个对象数据库,没有表.行等概念,也没有固定的模式和结构,所有的 ...

随机推荐

  1. 心急的C小加 贪心算法

    心急的C小加 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的 ...

  2. 南洋理工大学 ACM 在线评测系统 矩形嵌套

    矩形嵌套 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a& ...

  3. matplotlib的cmap

    今天又看到了这样的代码: plt.imshow(X_train[0], cmap=plt.get_cmap('PuBuGn_r')) #plt.imshow(X_train[0], cmap=plt. ...

  4. 【JEECG技术博文】Local storage & easyui extensions

    1. Local storage背景 cookie弊端:同域内http请求都会带cookie,添加带宽和流量:有个数和限制大小(约4K). 在HTML5中,本地存储是一个window的属性.包含loc ...

  5. JAVA进阶-泛型

    >泛型:泛型指代了參数的类型化类型,一般被用在接口.类.方法中 >作用:用来确定參数的范围,在书写代码的时候提前检查代码的错误性 >泛型的声明,下面给出类声明,依此类推: class ...

  6. ASP.NET MVC2 Web项目中公用类库的问题

    ASP.NET WEB窗体 网站中,加入公用类文件的话,系统会很自动并殷勤的问你,说要不要把它存放在文件夹 App_Code 里.一旦加入,全站都可以很方便地加以使用,一点问题没有. 这种习以为常的方 ...

  7. bzoj4887: [Tjoi2017]可乐

    一眼暴力宽搜(最近比赛想暴力想疯了... 很明显的矩乘,然后自爆可以看作走向向一个无出边的点 然后没啥难的了吧. #include<cstdio> #include<iostream ...

  8. 国内物联网平台初探(五) ——机智云IoT物联网云服务平台及智能硬件自助开发平台

    平台定位 机智云平台是致力于物联网.智能硬件云服务的开放平台.平台提供了从定义产品.设备端开发调试.应用开发.产测.运营管理等覆盖智能硬件接入到运营管理全生命周期服务的能力. 机智云平台为开发者提供了 ...

  9. net快速写入/读取大量数据Postgresql

    Postgresql快速写入/读取大量数据 http://www.cnblogs.com/podolski/p/7152144.html 环境及测试 使用.net驱动npgsql连接post数据库.配 ...

  10. Spring配置之OpenSessionInViewFilter

    转自:https://www.cnblogs.com/blogonfly/articles/3991782.html 参考: OpenSessionInViewFilter作用及配置:http://w ...