zoukankan      html  css  js  c++  java
  • 【原】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({})

    学习资料

    网址:

    1. 官方Tutorial
    2. 官方 Document
    3. Tutorial
    4. Java操作Mongodb

    Mongodb官方文档感觉写的真心不错,推荐!

  • 相关阅读:
    Java使用默认浏览器打开指定URL
    eclipse.ini内存设置
    Eclipse关联Java源代码
    C#调用Java代码
    UVA12161 Ironman Race in Treeland
    [JSOI2012]玄武密码
    着色问题
    luogu P2680 运输计划
    [BJWC2010]严格次小生成树
    [SDOI2015]异象石
  • 原文地址:https://www.cnblogs.com/yourarebest/p/6014696.html
Copyright © 2011-2022 走看看