MongoDB特点

MongoDB是NoSQL的一种,非关系型数据库,或者叫不只是关系型数据库(Not Only SQL)。MongoDB采用json格式的文档存储,与Redis的key-value有区别。每个json文档(每行)的结构可能是一样的,因此可以实现关系型数据库的部分功能,比如建立索引,条件查询。下面是基本概念对比

SQL NoSQL
MySQL MongoDB
database database
table collection
row document

MongoDB 安装与配置

  • 安装略
  • 启动服务端
  • 启动客户端连接
  • 配置用户

    MongoDB默认创建了几个库(db/schema),admin,config,local,test等。admin主要用来存储用户权限表。通过
db.createUser({user:'username', pwd:'userpass', roles:[{role:'readWrite', db:'test'}]})

来创建用户和赋予权限。普通db的用户权限有read, readWrite, dbAdmin, userAdmin.分别表示读,读写,db管理,用户管理。每个db可以有独立的用户权限表。

admin库的用户拥有更多角色权限。通常用来管理全局数据库的权限,root, readWriteAnyDatabase 等

认证用户之前需要选择用户创建的时候指定的库,比如上面的username

> use test
test
> db.auth('username', 'userpass')
1

MongoDB 增删改查

MongoDB的集合collection(table)一般不需要创建可以直接使用。

> use test
test
> db.newCollection.insert({name:'dapianzi', say:'hello world'})

MongoDB 有一种固定大小的集合,通常用来存储日志,超过大小限制之后会从头开始覆盖写入。这种集合需要显式创建

> db.createCollection("mycol", { capped : true, autoIndexId : true, size : 6142800, max : 10000 } )
{ "ok" : 1 }
>

collection的名字可以包含空格和-,可以使用保留字。但是在shell中无法使用db.collectionName的形式,需要用db.getCollection:

db.getCollection("3 test").find()
db.getCollection("3-test").find()
db.getCollection("stats").find()
  • Insert 操作

    其他方法比如update,save,findAndUpdate 通过设置 {upsert: true} 也可以插入新数据
    db.collection.insert({document:"document1"})
db.collection.insertOne({document:"document2"})
db.collection.insertMany([{document:"document3"},{document:"document4"}])
  • update / save

  • delete

  • query -- db.collection.find(option)

    @see Query Documents — MongoDB Manual 3.6

    MongoDB通过组合json查询条件实现不同查询需求, 常用的有 $or, $gt, $in, $gte 等,支持正则表达式查询。
db.collection.find({name:/^w/})
//相当于
SELECT * FROM table WHERE name LIKE 'w%'

如果文档内容是嵌入的文档(json),可以通过下面两种方式查询:

db.collection.find({item: {subKey: 'a', subName:'b'}})
db.collection.find({'item.subKey':'a', 'item.subName':'b'})

查询数组列表有几个模式比较特别:

db.inventory.find( { tags: ["red", "blank"] } ) 数组tags等于["red","blank"]

db.inventory.find( { tags: { $all: ["red", "blank"] } } ) 数组包含red和blank,不限顺序和是否还有其他元素

db.inventory.find( { dim_cm: { $gt: 15, $lt: 20 } } ) 数组里存在元素x>15,同时存在元素y<20的元素

db.inventory.find( { dim_cm: { $elemMatch: { $gt: 22, $lt: 30 } } } ) 至少存在一个元素x同时满足15<x<20

MongoDB 主从复制,分布式架构

MongoDB支持多种架构,从简单的主备复制,到分布式存储都有成熟的体系可以直接应用。可以简单了解一下,遇到需要应用的场景时再仔细研究。

MongoDB的初步学习暂时就到这里,下一篇将重点学习MongoDB的聚合查询,全文索引等。

MongoDB入门,安装配置与基本CURD操作的更多相关文章

  1. Mybatis学习第一天——Mybatis的安装配置以及基本CURD操作

    1.Mybatis下载 Mybatis是开源的持久层框架,能够度jdbc进行简单的封装,但其并不是完全的ORM(Object Relational Mapping,对象关系映射),无法脱离数据库进行适 ...

  2. MongoDB的安装配置、基本操作及Perl操作MongoDB

    MongoDB的安装配置.基本操作及Perl操作MongoDB http://www.myhack58.com/Article/60/63/2014/42353.htm

  3. windows下mongodb基础玩法系列二CURD操作(创建、更新、读取和删除)

    windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...

  4. Linux入门总结——虚拟机安装配置以及vim简单操作

    安装配置ubuntu 安装准备 vittualbox-5.2.22版本(win10) ubuntu-12.04 安装VirtualBox 1.双击VirtualBox-5.2.2-119230-Win ...

  5. 概述hibernate入门安装配置

    1.jdbc连接的优缺点 JDBC的优点 直接底层操作,提供了很简单.便捷的访问数据库的方法,跨平台性比较强.灵活性比较强,可以写很复杂的SQL语句. JDBC的缺点 1).因为JAVA是面向对象的, ...

  6. Linux环境下NodeJS和MongoDB的安装配置

     一.NodeJS的安装配置 #进入安装目录cd /usr/local/ #删除原有安装rm -rf noderm -rf node-v0.10.29-linux-x64 #解压压缩包tar -zxv ...

  7. MongoDB下载+安装+配置+错误解决方法

    下载 官网下载: https://www.mongodb.com/download-center/community Server=>Download 安装 下载完成后安装 建议下载根目录(下过 ...

  8. MongoDB(二)——安装配置了解

    前边介绍了MongoDB的大概理论知识,这篇来对MongoDB进行一下安装使用,支持安装在windows和linux上,当然了很多其它情况下我们是安装在linux上,由于毕竟server用linux的 ...

  9. mysql 安装配置及经常使用操作

    作为关系型数据库的一种,mysql因其占用内存小和开源等特性而兴起.以下简介下关于mysql配置和简单的操作. mysql配置 1.安装文件的下载 免安装版下载地址 :http://dev.mysql ...

随机推荐

  1. 技术总监Sycx的故事

    其实我在各种演讲里,线下吹牛里面无数次提及过他,讲过他的故事,但是总还是没有任何一次认认真真的详细讲过,所以,今天就讲讲他的故事吧. Sycx是福建漳州人,我经常开玩笑说,你生于一个著名的骗子之乡,为 ...

  2. Sql server big data如何批量update数据

    原因: 要一次性update 2千万条数据,虽然update sql很简单,但是由于一次性修改太多的数据,造成数据库log满了,就会报error: [ErrorCode: 9002, SQL Stat ...

  3. 分析诊断工具之一:MYSQL性能查看(多指标)

    网上有很多的文章教怎么配置MySQL服务器,但考虑到服务器硬件配置的不同,具体应用的差别,那些文章的做法只能作为初步设置参考,我们需要根据自己的情况进行配置优化,好的做法是MySQL服务器稳定运行了一 ...

  4. 微服务监控之一:Metrics让微服务运行更透明

    摘要 让微服务运行状态清晰可见. 嘉宾演讲视频回顾及PPT:http://t.cn/R8b6i85 Metrics是什么 直译是“度量”,不同的领域定义有所区别,在微服务领域中的定义: “对微服务的某 ...

  5. Celery-4.1 用户指南: Task(任务)

    任务是构建 celery 应用的基础块. 任务是可以在任何除可调用对象外的地方创建的一个类.它扮演着双重角色,它定义了一个任务被调用时会发生什么(发送一个消息),以及一个工作单元获取到消息之后将会做什 ...

  6. 2015.12.14 MDI(多文档窗口结构)设置基本解决,折腾一天,部分解决存在已久的问题。但效果仍不如临时航线的MDI窗体结构。

    创建从一个窗口弹出多个子窗口的结构叫MDI窗体结构 如果不按MDI结构管理,最简单的做法是: 在窗体A上添加菜单或按钮,在菜单或按钮事件中添加弹出B窗体代码: B b = new B(); b.sho ...

  7. 问题:C# ToString("P");结果:c#中的常用ToString()方法总结

    c#中的常用ToString()方法总结   很多类都重写了ToString方法, 导致很多类的tostring到底执行了什么,有哪些参数,都不清楚 对于int,double等的tostring: C ...

  8. LAMP 3.0 mysql配置讲解

    mysql 安装好后,我们是从安装包的 support-files 里面复制过来一个模板配置文件,默认 mysql 配置文件是在/etc/my.cnf 下,其实这个路径或者文件名字我们是可以修改的,在 ...

  9. 【277】◀▶ Python 列表/元组/字典说明

    目录: 前言 一.访问列表中的值 二.更新列表 三.删除列表元素 四.Python 列表脚本操作符 五.Python 列表函数 & 方法 参考:Python 列表(List)使用说明 列表截取 ...

  10. 2018网络预选赛 徐州H 线段树+树状数组

    设读入的数组是a,树状数组用来维护a数组区间和sum,线段树用来维护一个另一个数组ssum的区间和,区间每个点a[i]*(n-i+1),那么l-r的答案是l-r的ssum-(n-r)*(sum[r]- ...