简介

MongoDB 中文文档

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

Mongoose

在Node中可以使用 Mongoose库来连接数据库

mongoose中文文档

npm i mongoose  -s

基础操作

连接数据库

const mongoose = require('mongoose');

//连接指定数据库
mongoose.connect(
'mongodb://ip地址/数据库名称',
{
useNewUrlParser: true,
useUnifiedTopology: true
}
);
const conn = mongoose.connection;
//绑定连接完成监听
conn.on('connected',function () {
console.log('数据库连接成功');
})

创建model

  • 用Schema来定义数据对象的结构

  • 通过 mongoose.model(表名,数据对象) 来定义model

//得到对应特定集合的model (文档:数据对象, 集合:数据表)
const Schema = mongoose.Schema;
const userSchema = new Schema({ //文档结构: 属性名\属性值
name: { type: String, default: 'hahaha' },
age: { type: Number, min: 18, index: true },
bio: { type: String, match: /[a-z]/ },
password: {type:String,select: false} //select: false 表示当返回对象时,不包含该属性
}); //定义Model
const UserModel = mongoose.model('user',userSchema);//创建了users集合

增删查改

通过上一步创建的Model来实现增删查改

相关的CRUD函数: https://mongoosejs.com/docs/queries.html

//增
function saveTest() {
//创建实例
const userModel = new UserModel({
username: 'admin',
age: 19,
bio:"z",
password:md5('12345') //利用 blueimp-md5库,将密码加密
}); userModel.save(function (err, data) {
console.log('save()',err,data);
})
}
//删
function deleteTest() {
UserModel.deleteOne(
{
_id: '5e4d1c324abf031e98915a65'
},(err, product) => {
console.log('delete ',err,product);
}
)
}
//查 通过find()/findOne()/findById
function findTest() {
UserModel.find(
(err,doc)=>{
console.log('find()',err,doc)
}
); UserModel.findOne({username: 'admin'},
function (err,doc) {
console.log('findOne()',err,doc)
})
} //改
function updateTest() {
UserModel.findByIdAndUpdate({
_id: '5e4d1c324abf031e98915a65'
},{
username: 'newName'
},
function (err,doc) {
console.log('findByIdAndUpdate',err,doc)
})
}

官方的条件查询例子

// With a JSON doc
Person.
find({
occupation: /host/,
'name.last': 'Ghost',
age: { $gt: 17, $lt: 66 },
likes: { $in: ['vaporizing', 'talking'] }
}).
limit(10).
sort({ occupation: -1 }).
select({ name: 1, occupation: 1 }).
exec(callback); // Using query builder
Person.
find({ occupation: /host/ }). //模糊查询:正则表达式
where('name.last').equals('Ghost').
where('age').gt(17).lt(66).
where('likes').in(['vaporizing', 'talking']).
limit(10).
sort('-occupation').
select('name occupation').
exec(callback);

条件操作符:

$gt -------- greater than >

$gte --------- gt equal >=

$lt -------- less than <

$lte --------- lt equal <=

$ne ----------- not equal !=

$eq -------- equal =

$in:[] 满足其中一个在该数组之内 其相反为 $nin

limit 读取指定数量的记录 skip 跳过指定数量的记录

升降排序 升序关键字:'asc' / 'ascending' / 1 降序关键字:'desc' / 'descending' / -1

// 以 "field" 升序 并且 "test" 降序

query.sort({ field: 'asc', test: -1 });

// 等同于

query.sort('field -test');

select 用于包含和排除某些属性

// include a and b, exclude other fields

query.select('a b');

// exclude c and d, include other fields

query.select('-c -d');

Node中使用MongoDB的更多相关文章

  1. 在node中使用MongoDB

    1.下载安装包,进行安装: https://www.mongodb.com/download-center/community 参考网址:https://www.cnblogs.com/ymwange ...

  2. nodejs中使用mongodb quickstart

    nodejs中使用mongodb quickstart node 中使用mongodb的quick start.整理的官网crud简单例子. 在百度找了几篇帖子都有问题,所以直接看官网了. 连接Mon ...

  3. 详解node + mongoDb(mongoDb安装、运行,在node中连接、增删改查)

    一.序言 好久没写博客了,这次主要聊聊 node 和 mongoDb . 先说明一下技术栈  node + express + mongoose + mongoDb.这篇博客,主要讲述 mongoDb ...

  4. Node.js向MongoDB中插入并查询数据

    首先必须要保持Node.js与MongoDB保持连接 具体教程见:Node.js连接MongoDB数据库步骤 插入数据步骤如下 node项目文件如下:在routes文件夹下新建insert.js文件, ...

  5. MongoDB 在Node中的应用

    转: MongoDB 在Node中的应用 文章目录 一 .什么是 MongoDB? 二.小Demo 三.Demo 增删改查 3.1 新增 3.2 查询 3.2.1 查询所有 [{},{}] 找不到返回 ...

  6. Node中的定时器详解

    在大多数的业务中,我们都会有一些需求,例如几秒钟实现网页的跳转,几分钟对于后台数据进行清理,node与javascript都具有将代码延迟一段时间的能力.在node中可以使用三种方式实现定时功能:超时 ...

  7. MongoDB学习(2)—Node.js与MongoDB的基本连接示例

    前提 已经安装了node.js和MongoDB,本文使用的node.js是v0.12.0,MongoDB是3.0.0. 初始化数据 启动MongoDB服务,在test数据库中插入一条实例数据: db. ...

  8. 使用React、Node.js、MongoDB、Socket.IO开发一个角色投票应用的学习过程(三)

    这几篇都是我原来首发在 segmentfault 上的地址:https://segmentfault.com/a/1190000005040834 突然想起来我这个博客冷落了好多年了,也该更新一下,呵 ...

  9. Node.js和MongoDB - MongoJS入门

    第一次尝试翻译外国牛人的博文,希望大家喜欢. 本文源码详见:https://github.com/njaulj/mongojs 一点都不夸大的说,近年来node.js和mongodb的确是大放异彩,在 ...

随机推荐

  1. ios---scrollview用法总结

    一.使用步骤: 1.添加子组件到scrollview //必要步骤 2.设置clipsToBounds来确定超出范围是否被剪裁 (默认yes) self.scrolltest.clipsToBound ...

  2. iOS--->运行程序屏幕上下有黑边

    iOS--->运行程序屏幕上下有黑边 原因是LaunchImage没有设置好,图片等尺寸没有和对应的手机屏幕大小适配导致. 解决方法 就是要增加启动图片,把屏幕拉伸,匹配好每个机型的屏幕大小,这 ...

  3. springIOC源码接口分析(八):AutowireCapableBeanFactory

    参考博文: https://blog.csdn.net/f641385712/article/details/88651128 一 接口规范 从宏观上看,AutowireCapableBeanFact ...

  4. web自动化环境配置

    1.下载chrome浏览器对应版本的驱动 下载地址:https://npm.taobao.org/mirrors/chromedriver 2.下载后将chromedriver放到python安装路径 ...

  5. 找不到文件异常java.io.IOException: Resource [classpath:shiro.ini] could not be found.

    情景 tomcat启东时,老是报错,在classpath下找不到配置文件,但是配置文件已经放在resource目录下了 解决方案 出现该异常的原因,是因为新建的conf文件夹,识别不了,因为没有设置成 ...

  6. 解决python报错:ImportError: No module named shutil_get_terminal_size 的方法

    我的环境:Ubuntu 16.04.5 LTS 修改这个文件: $HOME/.local/lib/python2.7/site-packages/IPython/utils/terminal.py 这 ...

  7. webpack--运行npm run dev自动打开浏览器运行首页的两种方式以及热加载

    作为开发人员,我们在修改了代码之后,在vscode终端运行npm run dev指令后,希望它可以自动打开浏览器方便我们调试,有两种方式可以实现: 自动打开浏览器的两种方式: 方式一: 1.webpa ...

  8. 非常NB的一款快捷启动软件--Merry

    Merry 被设计为了能将日常重复性操作简化为一个快捷键或者命令.Merry 采用完全开放的体系, 可以使用 Lua 或者外部程序来扩展 Merry 的功能. 另附一个自己扩展的LUA脚本: --启动 ...

  9. Exchange2010安装指南

    安装流程参考下面的: https://jingyan.baidu.com/article/2c8c281d6893680008252a9c.html 安装环境:windows server 2008( ...

  10. HDU 1005 Number Sequence(矩阵快速幂,快速幂模板)

    Problem Description A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1 ...