MongoDB拾遗(一)

栏目: 数据库 · 发布时间: 5年前

内容简介:配置演示
  • MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案
  • MongoDB 将数据存储为一个文档,数据结构由键值( key=>value )对组成。 MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组

MongoDB拾遗(一)

主要特点

  • 高可扩展性
  • 分布式存储
  • 低成本
  • 结构灵活

1.2 window下 mongodb 环境搭建

db
Mongo

配置演示

  • 在任意目录创建几个文件夹

MongoDB拾遗(一) MongoDB拾遗(一)

通过命令行启动服务

配置环境变量

#  --dbpath指定数据存储位置
C:\Program Files\MongoDB\Server\3.4\bin\mongod --dbpath d:\mongodb\data

MongoDB拾遗(一)

通配置启动服务

# 配置d:\mongodb\etc\mongodb.conf

#数据库路径
dbpath=d:\mongodb\data\

#日志输出文件路径
logpath=d:\mongodb\logs\mongodb.log

#错误日志采用追加模式,配置这个选项后mongodb的日志会追加到现有的日志文件,而不是从新创建一个新文件
logappend=true

#启用日志文件,默认启用
journal=true

#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
quiet=true

#端口号 默认为27017
port=27017

#指定存储引擎(默认先不加此引擎,如果报错了,大家在加进去)
storageEngine=mmapv1

#http配置 开启这个服务才可以在网页中访问 端口28017
httpinterface=true
  • 启动方式
C:\Program Files\MongoDB\Server\3.4\bin\mongod --config d:\mongodb\data

MongoDB拾遗(一)

更加简洁的启动方式

安装到 window 的服务里面,打开Windows看一下

C:\Program Files\MongoDB\Server\3.4\bin\mongod --config d:\mongodb\data --install --serviceName "MongoDB"

MongoDB拾遗(一)

使用MongoVue连接数据库

MongoDB拾遗(一)

MongoDB拾遗(一)

1.3 linux 下mongodb环境搭建

db
Mongo
# 远程登录服务器
ssh root@123.142.25.365

上传本地的安装包

# 上传文件夹,传文件不需要r
scp /mongodb/... -r root@123.142.25.365:/home

# 传到服务器的/home/
# 在指定的目录创建启动需要的文件

$ cd /home/
$ mkdir etc logs data
$ touch logs/mongodb.log etc/mongo.conf
# /home/etc/mongo.conf配置

dbpath=/home/mongodb/data
logpath=/mongodb/logs/mongodb.log
logappend=true
journal=true
quiet=true
port=2701
# 启动服务
mongod -f /home/mongodb/etc/mongo.conf
# 创建软连接

ln -s /home/mongodb/bin/mongo /usr/local/bin/mongo

ln -s /home/mongodb/bin/mongod /usr/local/bin/mongod

二、基本概念

2.1 数据库对比

SQL术语/概念 MongoDB术语/概念 解析/说明
database database 数据库
table collection 数据表/集合
row document 数据记录/文档
column field 数据记录行/文档
index index 索引
table joins 表连接, MongoDB 不支持
primary key primary key 主键, MongoDB 自动将 _id 字段设置为主键

MongoDB拾遗(一)

2.2 数据库

  • 一个 mongodb 中可以建立多个数据库
  • MongoDB 的默认数据库为” db “,该数据库存储在 data 目录中
  • "show dbs" 命令可以显示所有数据的列表
  • 执行 "db" 命令可以显示当前数据库对象或集合
  • "use" 命令,可以连接到一个指定的数据库

2.3 文档

  • 文档是一组键值( key-value )对(即 BSON )
{"site":"www.runoob.com", "name":"菜鸟教程"}

2.4 插入文档

  • 切换数据库
    • use 数据库名(没有就创建)
  • db.createCollection("user")
    • 创建集合相当于创建表名
    • 或者这样创建
      • db.user.inert({id:123})

2.5 插入数据表

1. 手动插入

# 切换创建数据库
use demo 

# goods相当于数据表
db.goods.insert({"prodictId":"10001","productName":"aaa","slaePrice":246,"productImage":"1.jpg"})

# 创建数据表,暂时不需插入数据
db.createCollection("goods")

2. 客户端插入

利用 mongodbVue 导入

三、常用操作

3.1 创建用户

1. 创建管理员

  • 开启服务
# --auth进行授权,需要认证才可以
mongod -f d:/mongodb/etc/mongodb.conf --auth

2. 通过非授权的方式启动服务

# 创建admin数据库
use admin 

# 给admin数据库创建账号 
db.createUser({user:"admin",pwd:"admin",roles:["root"]}) # 3.4
db.addUser # 2.x

# 创建成功需要认证
db.auth("admin","admin") # 账号、密码

MongoDB拾遗(一)

3. 给使用的数据库添加用户

  1. 创建用户

MongoDB拾遗(一)

  1. 然后在授权登录试一下

3.2 MongoDB 创建数据库

MongoDB
use DATABASE_NAME
  • 查看所有数据库
    • show dbs
  • 我们刚创建的数据库 runoob 并不在数据库的列表中, 要显示它,我们需要向 runoob 数据库插入一些数据
> db.runoob.insert({"name":"poetries"})
WriteResult({ "nInserted" : 1 })
> show dbs

3.3 MongoDB 删除数据库

  • MongoDB 删除数据库的语法格式如下
  • 删除当前数据库,默认为 test ,你可以使用 db 命令查看当前数据库名
db.dropDatabase()

3.4 删除集合

db.collection.drop()

3.5 MongoDB 插入文档

文档的数据结构和 JSON 基本一样

3.6 插入文档

  • MongoDB 使用 insert()save() 方法向集合中插入文档,语法如下
db.COLLECTION_NAME.insert(document)
  • 以下文档可以存储在 MongoDBrunoob 数据库 的 col 集合中
>db.col.insert({title: 'MongoDB 学习', 
    description: 'MongoDB 是一个 Nosql 数据库',
    by: 'poetries',
    url: 'http://blog.poetries.top',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes: 100
})
  • 以上实例中 col 是我们的集合名,如果该集合不在该数据库中, MongoDB 会自动创建该集合并插入文档。

  • 查看已插入文档

> db.col.find()
> db.col.find().pretty() #格式化方式查看

3.7 MongoDB 更新文档

  • MongoDB 使用 update()save() 方法来更新集合中的文档

3.7 update() 方法

update() 方法用于更新已存在的文档。语法格式如下

  • 通过 update() 方法来更新标题( title ):
db.col.update({'title':'MongoDB 学习'},{$set:{'title':'MongoDB'}})

四、常用查询语句

mongo sql 说明
db.users.find() select * from users user 表中查询所有数据
db.users.find({“username” : “joe”, “age” : 27}) select * from users where “username” = “joe” and age = 27 查找 username = joeage = 27 的人
`db.users.find({}, {“username” : 1, “email” : 1}) select username, email from users` 查找 username , email2 个子项
db.users.find({“age” : {“$gt” : 18}}) select * from users where age >18 查找 age > 18 的会员
db.users.find({“age” : {“$gte” : 18}}) select * from users where age >=18 查找 age >= 18 的人
`db.users.find({“age” : {“$lt” : 18}}) select * from users where age <18` 查找 age < 18 的人
db.users.find({“age” : {“$lte” : 18}}) select * from users where age <=18 查找 age <= 18 的人
db.users.find({“username” : {“$ne” : “joe”}}) select * from users where username <> “joe” 查找 username != joe 的会员
`db.users.find({“ticket_no” : {“$in” : [725, 542, 390]}}) elect * from users where ticket_no in (725, 542, 390) 符合 tickt_no`在此范围的结果
db.users.find({“ticket_no” : {“$nin” : [725, 542, 390]}}) select * from users where ticket_no not in (725, 542, 390) 符合 tickt_no 不在此范围的结果
db.users.find({“name” : /joey^/}) select * from users where name like “joey%” 查找前 4 个字符为 joey 的人

五、MongoDB链接

5.1 MongoDB链接express

const express = require('express');
const mongoose = require('mongoose');
const app = express();

// 连接mongo 并且使用React这个集合,没有就会新建
const DB_URL = 'mongodb://127.0.0.1:27017/react';
mongoose.connect(DB_URL);
mongoose.connection.on('connected',()=>{
    console.log('mongo connect success');
})

// 类似于 MySQL 的表 mongo里有文档、字段的概念

const User = mongoose.model('user',new mongoose.Schema({
    user:{type:String,require:true},
    age:{type:Number,require:true}
}))

//新增数据
// User.create({
//     user:'小胡',
//     age:18
// },(err,doc)=>{
//     if(!err) {
//         console.log(doc)
//     } else {
//         console.log(err)
//     }
// })

// 删除数据 {}过滤对象
// User.remove({age:22},(err,doc)=>{
//     console.log(doc)
// })
// 更新
User.update({'user':'小明'},{'$set':{age:30}},(err,doc)=>{
    console.log(doc)
})
app.get('/',(req,res)=>{
    res.send('<h1>Hello word!</h1>')
})
app.get('/data',(req,res)=>{
    // findOne 只返回一条,返回对象直接使用,而不是返回数组
    User.findOne({'user':'小明'},(err,doc)=>{
        res.json(doc)
    })
})



app.listen(9000,()=>{
    console.log('Node app listen 9000')
})

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

从需求到产品:0岁产品经理进阶之道

从需求到产品:0岁产品经理进阶之道

权莉 / 人民邮电出版社 / 2018-7 / 49.80元

本书主要针对刚入职的初级产品经理,从贴近工作状态的场景切入,对各阶段的知识点进行分类总结,旨在提供一套经过实践检验的产品方法论,为读者从初级产品经理成长为产品经理奠定坚实的基础。 书中提炼的方法和案例涵盖初级产品经理工作的方方面面,从基本技能到思维方式,从需求管理到产品规划定义,从框架选型到流程梳理,从工作模块拆解到案例剖析,用具体且贴合实际工作场景的内容,还原真实的产品工作方法及实践案例,既有方......一起来看看 《从需求到产品:0岁产品经理进阶之道》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

SHA 加密
SHA 加密

SHA 加密工具