mongoDb

干嘛的:数据库,nosql(非关系型|缓存型)

场景:解决大规模数据集合多重数据种类

下载:https://www.mongodb.com/download-center
安装:https://www.cnblogs.com/keyi/p/10984514.html

测试服务端是否启动:
启动客户端: 安装目录\Server\4.0\bin\ mongo 回车
手动启动服务端:安装目录\Server\4.0\bin\ mongod 回车
port=27017 默认端口
mongodb://127.0.0.1:27017 协议+IP+端口

指定数据存储目录: 需要指定一次
mongod --dbpath c:\data\db db目录要手动创建
环境变量:为了在任意盘符下去启动客户端和服务端 mongod服务端|mongo客户端
我的电脑->属性->高级配置->环境变量-》 + key:value

开启客户端: mongo 回车

UI工具软件: 收费(下载+缴费)
原生命令行(shell): cmd->mongo回车 git bash - > mongo回车 webstrom->dos/linux
nodejs: 安装mongodb的包(客户端)

和mysql对比

名词
mysql mongoDb

database(库) database(库)
table(表) collection(集合)
row(一条数据) document(文档)
column(字段) field(区域)
...

存储方式:
mysql 二维表
MongoDB json
mongodb命令行操作方式: 声明式 | obj.api()

库操作:

查: show dbs
db 查看当前库
建: use 库名 没有建,有就切换
集合(表)操作:
建:db.createCollection('表名',{配置})
配置:{size:文件大小,capped:true,max:条数|文档数} capped定量
db.表(集合).isCapped() 返回 true/false 是否是定量
查:show collections / db.getCollectionNames()
删:db.表|集合.drop()
文档(row)操作:
增:
db.集合.save({}) / db.集合.insert({}) 添加一条
db.insertOne({})

db.集合.save([{},{}]) / db.集合.insert([{},{}]) 多条
insert 不会替换相同ID save会

删:
db.集合.deleteOne({要删数据条件描述}) db.集合.remove({},true) 一条
db.集合.remove({要删数据条件描述}) 多条
db.集合.remove({}) 清空表
改:
db.集合.udpate({查询条件},{替换条件},插入bl,全替换bl)
替换后的:
{$set:{数据},$inc:{age:1}}
查:
所有:db.集合.find(条件)
条数: db.集合.find().count()
去重:db.集合.distinct(key)

条件
{age:22} age == 22
{age:{$gt:22}} age > 22
{age:{$lt:22}} age < 22
{age:{$gte:22}} age>=22
{age:{$lte:22}} age<=22
{age:{$lte:122,$gte:22}} age<=122 && age>=22
{$or:[{age:22},{age:122}]} 22 or 122
{key:value,key2,value2} value && value2
{name:/正则/}

db.集合.find({条件},{指定要显示列区域})
指定要显示列区域: 区域名username:1 显示着个区域,其他不显示
指定要显示列区域: 区域名username:0 不显示着个区域,其他显示
_id 是默认显示

限定:
db.集合.find().limit(number) 限定
db.集合.find().skip(number) 跳过
db.集合.findOne() / db.集合.find().limit(1) 查询第一条

升:db.集合.find().sort({key:1,key2:-1})
降:db.集合.find().sort({key:-1})

db.集合.find({条件},{指定显示区域}).skip(10).limit(10).sort({key:1})
db.insertOne({数据描述})

mongodb 客户端包 mongodb | mongoos

1. require('mongodb'); 引入模块 第三方模块
2. 创建客户端 mongoCt = mongodb.MongoClient
3. 创建链接 mongoCt.connect('协议://地址:端口',回调(err,client))
3.5 链库 client.db('库名')
4. 链接集合(表) user = db.collection('集合名');
5. user.API() 集合操作 返回 对象
one === 1 Many 多个


insertOne(对象数据,(err,res)=>{}) res = 对象
insertMany(arr数据,(err,res)=>{}) res = 对象
res.result.n 结果 ok 状态
res.ops内容 数组
result.insertedId 插入后的id

删:
deleteOne({条件},(err,result)=>{})
res.result.n 结果 ok 状态
result.deletedCount:1 删除的条数
改:
updateOne({条件},{更新后},(err,res)=>{})
updateMany({条件},{更新后},(err,res)=>{})

res.result.n 结果 ok 状态
res.modifiedCount 修改的条数

updateMany({条件},{更新后},{配置},(err,res)=>{})

配置: upsert:true 插入
projection:true 全局替换
查:
user.find({条件},{skip:1,limit:1,projection:{key:1}},(err,result)=>{result=对象})
user.find({条件},{projection:{key:0}}).toArray((err,result)=>{reulst==arr})
user.countDocuments((err,num)=>{num返回数量})

排序
user.find(..).sort({key:-1}).toArray..
user.find({},{projection:{},sort:{key:-1}}).toArray..
6. client.close() 关闭库链接

mongDb在node中的操作的更多相关文章

  1. node中的Stream-Readable和Writeable解读

    在node中,只要涉及到文件IO的场景一般都会涉及到一个类-Stream.Stream是对IO设备的抽象表示,其在JAVA中也有涉及,主要体现在四个类-InputStream.Reader.Outpu ...

  2. 深入理解jQuery、Angular、node中的Promise

    最初遇到Promise是在jQuery中,在jQuery1.5版本中引入了Deferred Object,这个异步队列模块用于实现异步任务和回调函数的解耦.为ajax模块.队列模块.ready事件提供 ...

  3. Node.js简单操作

    在node中是不支持BOM和DOM操作的,所以像alert().document.write...都是不支持的,可以是console.log() 首先我们来输出"hello world&qu ...

  4. node中的可读流和可写流

    javascript的一个不足之处是不能处理二进制数据,于是node中引入了Buffer类型.这个类型以一个字节(即8位)为单位,给数据分配存储空间.它的使用类似于Array,但是与Array又有不同 ...

  5. 清理8组nodes中表的历史数据,平均每个node中的表有1.5亿条记录,需要根据date_created字段清理8000W数据记录,这个字段没有索引。

    清理8组nodes中表的历史数据,平均每个node中的表有1.5亿条记录,需要根据date_created字段清理8000W数据记录,这个字段没有索引. 环境介绍  线上磁盘空间不足,truncate ...

  6. node.js高效操作mongodb

    node.js高效操作mongodb Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为Jav ...

  7. 重回博客 谈一谈Node中的异步和单线程

    重回博客,这个帐号之前注册后就只发了一篇博客.听朋友建议,决定一周两次更新. 第一篇谈论一下最近想的比较多的异步的问题. 传统多线程异步 传统的异步是多线程的,当要同时做两件事的时候,他们是执行在不同 ...

  8. Node.js之操作文件系统(一)

    Node.js之操作文件系统(一) 1. 同步方法与异步方法 在Node.js中,使用fs模块来实现所有有关文件及目录的创建.写入及删除操作.,在fs模块中,所有对文件及目录的操作都可以使用同步与异步 ...

  9. Node.js之操作文件系统(二)

    Node.js之操作文件系统(二) 1.创建与读取目录 1.1 创建目录 在fs模块中,可以使用mkdir方法创建目录,该方法的使用方法如下: fs.mkdir(path,[mode],callbca ...

随机推荐

  1. rtmp协议规范

    译序: 本文是为截至发稿时止最新 Adobe 官方公布的 RTMP 规范.本文包含 RTMP 规范的全部内容.是第一个比较全面的 RTMP 规范的中译本.由于成文时间仓促,加上作者知识面所限,翻译错误 ...

  2. 数据结构与算法 --- js描述栈

    js描述栈及栈的使用 栈的特性就是只能通过一端访问,这一段就是叫做栈顶.咖啡馆内的一摞盘子就是最形象的栈的例子: 根据栈的特性,就可以定义栈的一些特殊属性和方法;用js的描述栈的时候底层数据结构用的是 ...

  3. 使用shiro 框架 报错No WebApplicationContext found: no ContextLoaderListener or DispatcherServlet registered?

    1.问题描述:ssm 框架中使用shiro  中出现问题 原来web.xml 文件如下: <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, ...

  4. mybatis typeAlias (别名)说明

                                                                                                        ...

  5. Zabbix3.4搭建过程

    一.安装之前把firewall 和 selinux关闭. 二.具体的搭建过程可以看zabbix官网的文档,www.zabbix.com(有中文的文档)注意如果复制官网的命令直接使用的话,不会安装mys ...

  6. 解决Apple Mobile Device USB Driver

    在设备管理器里找到便携设备:APPLE IPHONE 更新驱动 自定义更新:在设备管理器里找到便携设备:APPLE IPHONE 更新驱动 自定义更新:C:\Program Files\Common ...

  7. step1:准备歌词之《前端开发是个啥》

    以下是给大家介绍前端开发的填词,曲子是李圣杰的<最近>,大家喜欢可以试试唱. 点赞关注超过100的平台,我后续上来发本人原唱视频(目前正在练习中...),另外大家觉得哪些词写得不好的,欢迎 ...

  8. 浅谈JSONP 的工作原理

    小编最近在工作中经常用到 jsonp 这个东西, 表示之前从来没用过  最近稍微研究了下 当然很多内容来源于网上 收集整理 你懂的 ~~~ 话说我们访问一个页面的时候 需要像另一个网站获取部分信息, ...

  9. javascript console对象 常用的方法

    console对象 var o = {name:'3'} console.assert(o.name === '3', "name 的值应该为:string 3"); consol ...

  10. 后台+下载(wget)+多个下载url

    有时候我们需要让linux下载多个文件,并且后台下载,不去占用当前控制台. 比如我们需要下载中文维基的三个文件: https://dumps.wikimedia.org/zhwiki/latest/z ...