【原】Mongodb相关资料
Mongodb与关系型数据库对比
Mongodb与关系型数据库对比
由于之前主要接触的是关系型数据库,所以主要将Mongodb与关系型数据库进行对比:主要从术语、Server与Client、数据定义语言和操作语言四个方面进行比较。
1.术语
Mongodb与关系型数据库的术语对比如下图
| 关系型数据库术语 | MongoDB 术语 |
|---|---|
| database | database |
| table | collection |
| row | document or BSON document |
| column | field |
| index | index |
| table joins | embedded documents and linking |
| primary key Specify any unique column or column combination as primary key. | primary key In MongoDB, the primary key is automatically set to the _id field. |
| aggregation (e.g. group by) | aggregation pipeline See the SQL to Aggregation Mapping Chart. |
2.数据库Server与Client对比
| type | MongoDB MySQL | Oracle | Informix | DB2 |
|---|---|---|---|---|
| Database Server | mongod | mysqld | oracle | IDS |
| Database Client | mongo | mysql | sqlplus | DB-Access |
3.数据定义语言CREATE、ALTER、DROP比较
| 关系型数据库SQL语句 | MongoDB语句 |
|---|---|
| CREATE TABLE users ( id MEDIUMINT NOT NULL AUTO_INCREMENT,user_id Varchar(30),age Number,status char(1),PRIMARY KEY (id)) | Implicitly created on first insert() operation. The primary key_id is automatically added if _id field is not specified. db.users.insert( { user_id: "abc123", age: 55, status: "A" } ) However, you can also explicitly create a collection: db.createCollection("users") |
| ALTER TABLE usersADD join_date DATETIME | Collections do not describe or enforce the structure of its documents; i.e. there is no structural alteration at the collection level. However, at the document level, update() operations can add fields to existing documents using the $set operator. db.users.update( { }, { $set: { join_date: new Date() } }, { multi: true }) |
| ALTER TABLE usersDROP COLUMN join_date | Collections do not describe or enforce the structure of its documents; i.e. there is no structural alteration at the collection level. However, at the document level, update() operations can remove fields from documents using the $unset operator. db.users.update( { }, { $unset: { join_date: "" } }, { multi: true }) |
| CREATE INDEX idx_user_id_ascON users(user_id) | db.users.createIndex( { user_id: 1 } ) |
| CREATE INDEX idx_user_id_asc_age_descON users(user_id, age DESC) | db.users.createIndex( { user_id: 1, age: -1 } ) |
| DROP TABLE users | db.users.drop() |
4.数据操作语言CURD比较
INSERT
| SQL INSERT 语句 | MongoDB insert语句 |
|---|---|
| INSERT INTO users(user_id,age,status)VALUES ("bcd001",45,"A") | db.users.insert( { user_id: "bcd001", age: 45, status: "A" }) |
SELECT
| SQL SELECT 语句 | MongoDB find 语句 |
|---|---|
| SELECT *FROM users | db.users.find() |
| SELECT id,user_id,statusFROM users | db.users.find( { }, { user_id: 1, status: 1 }) |
| SELECT user_id, status FROM users | db.users.find( { }, { user_id: 1, status: 1, _id: 0 }) |
| SELECT *FROM usersWHERE status = "A" | db.users.find( { status: "A" }) |
| SELECT user_id, statusFROM usersWHERE status = "A" | db.users.find( { status: "A" }, { user_id: 1, status: 1, _id: 0 }) |
| SELECT *FROM usersWHERE status != "A" | db.users.find( { status: { $ne: "A" } }) |
| SELECT *FROM usersWHERE status = "A"AND age = 50 | db.users.find( { status: "A", age: 50 }) |
| SELECT *FROM usersWHERE status = "A"OR age = 50 | db.users.find( { $or: [ { status: "A" } , { age: 50 } ] }) |
| SELECT *FROM usersWHERE age > 25 | db.users.find( { age: { $gt: 25 } }) |
| SELECT *FROM usersWHERE age < 25 | db.users.find( { age: { $lt: 25 } }) |
| SELECT *FROM usersWHERE age > 25AND age <= 50 | db.users.find( { age: { $gt: 25, $lte: 50 } }) |
| SELECT *FROM usersWHERE user_id like "%bc%" | db.users.find( { user_id: /bc/ } ) |
| SELECT *FROM usersWHERE user_id like "bc%" | db.users.find( { user_id: /^bc/ } ) |
| SELECT *FROM usersWHERE status = "A"ORDER BY user_id ASC | db.users.find( { status: "A" } ).sort( { user_id: 1 } ) |
| SELECT *FROM usersWHERE status = "A"ORDER BY user_id DESC | db.users.find( { status: "A" } ).sort( { user_id: -1 } ) |
| SELECT COUNT(*)FROM users | db.users.count() or db.users.find().count() |
| SELECT COUNT(user_id)FROM users | db.users.count( { user_id: { $exists: true } } ) or db.users.find( { user_id: { $exists: true } } ).count() |
| SELECT COUNT(*)FROM users WHERE age > 30 | db.users.count( { age: { $gt: 30 } } ) or db.users.find( { age: { $gt: 30 } } ).count() |
| SELECT DISTINCT(status)FROM users | db.users.distinct( "status" ) |
| SELECT *FROM usersLIMIT 1 | db.users.findOne() or db.users.find().limit(1) |
| SELECT *FROM usersLIMIT 5SKIP 10 | db.users.find().limit(5).skip(10) |
| EXPLAIN SELECT *FROM usersWHERE status = "A" | db.users.find( { status: "A" } ).explain() |
UPDATE
| SQL Updatey语句 | MongoDB update语句 |
|---|---|
| UPDATE usersSET status = "C"WHERE age > 25 | db.users.update( { age: { $gt: 25 } }, { $set: { status: "C" } }, { multi: true }) |
| UPDATE usersSET age = age + 3WHERE status = "A" | db.users.update( { status: "A" } , { $inc: { age: 3 } }, { multi: true }) |
DELETE
| SQL Delete 语句 | MongoDB remove语句 |
|---|---|
| DELETE FROM usersWHERE status = "D" | db.users.remove( { status: "D" } ) |
| DELETE FROM users | db.users.remove({}) |
学习资料
网址:
Mongodb官方文档感觉写的真心不错,推荐!
【原】Mongodb相关资料的更多相关文章
- MongoDB相关资料
MongoDB的介绍及安装参考http://www.cnblogs.com/lipan/archive/2011/03/08/1966463.html 安装过程: 第一步:下载安装包:官方下载地址←单 ...
- MongoDB相关资料收集
MongoDB 入门教程http://www.runoob.com/mongodb/mongodb-tutorial.html .net 驱动程序下载:http://mongodb.github.io ...
- AssetBundle机制相关资料收集
原地址:http://www.cnblogs.com/realtimepixels/p/3652075.html AssetBundle机制相关资料收集 最近网友通过网站搜索Unity3D在手机及其他 ...
- Mongodb相关 (Shell命令 / mongoose)
Mongodb相关 1.创建一个文件夹作为数据库存放的目录 2.打开cmd cd到Mongodb/bin目录去 3.执行mongod --dbpath "第一项创建的文件夹(数据库数据存放目 ...
- 全文检索解决方案(lucene工具类以及sphinx相关资料)
介绍两种全文检索的技术. 1. lucene+ 中文分词(IK) 关于lucene的原理,在这里可以得到很好的学习. http://www.blogjava.net/zhyiwww/archive/ ...
- React Test相关资料
karma 前端测试驱动器,生产测试报告,多个浏览器 mocha js的测试框架,相当于junit chai,单元测试的断言库,提供expect shudl assert enzyme sinon.j ...
- iOS10以及xCode8相关资料收集
兼容iOS 10 资料整理笔记 源文:http://www.jianshu.com/p/0cc7aad638d9 1.Notification(通知) 自从Notification被引入之后,苹果就不 ...
- Nao 类人机器人 相关资料
Nao 类人机器人 相关资料: 1.兄妹 PEPPER :在山东烟台生产,http://www.robot-china.com/news/201510/30/26564.html 2.国内机器人领先公 ...
- GBrowse配置相关资料
GBrowse配置相关资料(形状.颜色.配置.gff3) http://gmod.org/wiki/Glyphs_and_Glyph_Optionshttp://gmod.org/wiki/GBrow ...
随机推荐
- amd(超微半导体公司(英语:Advanced Micro Devices, Inc.,缩写:AMD))
公司名称 AMD(超微半导体公司) 经营范围 CPU.显卡.主板等电脑硬件设备 AMD公司专门为计算机.通信和消费电子行业设计和制造各种创新的微处理器(CPU.GPU.APU.主板芯片组.电视卡芯 ...
- Bolt 动画
引擎内置的 种动画 --PosChangeAnimation 平移 local ani = XLGetObject("Xunlei.UIEngine.AnimationFactory&quo ...
- wxpython 中 用鼠标拖动控件 总结
#encoding: utf-8 import wx import os import noname class Frame( noname.MyFrame1 ): def __init__(self ...
- ConcurrentHashMap使用示例
ConcurrentHashMap使用示例 发表于2年前(2013-07-12 19:05) 阅读(3660) | 评论(0) 25人收藏此文章, 我要收藏 赞5 如何快速提高你的薪资?-实力拍“ ...
- 37. Sudoku Solver
题目: Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated b ...
- poj2454
我不会告诉你我对我自己的想法笑了一下午的.. #include <iostream> #include <algorithm> #include <time.h> ...
- [置顶] 手机通过socket控制电脑关机,重启,注销等功能
服务端 package com.pc; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOE ...
- oracle 11g SQL Developer instead of isqlplus
Oracle11g的新工具SQL DEVELOPER,替代了 isqlplus 1.创建连接方式 2.SQL输入窗口 3.表的结构及其他信息查阅 4.SQL语句测试 5.创建表 6.用户授权 7.数据 ...
- Spring 事务中 readOnly 的解释
spring 中事务的PROPAGATION_REQUIRED,Readonly的解释 (2012-11-21 16:29:38) 转载▼ 标签: 杂谈 一. ...
- linux/unix网络编程之 select
转自http://www.cnblogs.com/zhuwbox/p/4221934.html linux 下的 select 知识点 unp 的第六章已经描述的很清楚,我们这里简单的说下 selec ...