zoukankan      html  css  js  c++  java
  • MongoDb与其他关系型数据库的CRUD操作对照关系

    一、术语与概念对照表
        这个表格主要说明mongodb与其他关系型数据库在术语与概念上的区别。
     
     
    SQL Terms/ConceptsMongoDB Terms/Concepts
    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.

    二、示例创建和修改数据表结构(create and alter) 创建数据库的操作请查看我的这篇文章http://www.cnblogs.com/whynever/p/3801150.html mongodb的基本操作

    SQL Schema StatementsMongoDB Schema Statements
    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 users
    ADD 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 users
    DROP 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_asc
    ON users(user_id)
    
    db.users.ensureIndex( { user_id: 1 } )
    
    CREATE INDEX
           idx_user_id_asc_age_desc
    ON users(user_id, age DESC)
    
    db.users.ensureIndex( { user_id: 1, age: -1 } )
    
    DROP TABLE users
    
    db.users.drop()

    三、插入数据(insert save)

    SQL INSERT StatementsMongoDB insert() Statements
    INSERT INTO users(user_id,  age, status)
    VALUES ("bcd001", 45, "A")
    
    db.users.insert(
       { user_id: "bcd001", age: 45, status: "A" }
    )
            关于插入数据的更多信息(http://docs.mongodb.org/manual/reference/method/db.collection.insert/#db.collection.insert)

    四、查询数据(select操作)

    SQL SELECT StatementsMongoDB find() Statements
    SELECT * FROM users
    
    db.users.find()
    
    SELECT id,  user_id, status FROM 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 users WHERE status = "A"
    
    db.users.find(
        { status: "A" }
    )
    
    SELECT user_id, status FROM users WHERE status = "A"
    
    db.users.find(
        { status: "A" },
        { user_id: 1, status: 1, _id: 0 }
    )
    
    SELECT *
    FROM users
    WHERE status != "A"
    
    db.users.find(
        { status: { $ne: "A" } }
    )
    
    SELECT *
    FROM users
    WHERE status = "A"
    AND age = 50
    
    db.users.find(
        { status: "A",
          age: 50 }
    )
    
    SELECT *
    FROM users
    WHERE status = "A"
    OR age = 50
    
    db.users.find(
        { $or: [ { status: "A" } ,
                 { age: 50 } ] }
    )
    
    SELECT *
    FROM users
    WHERE age > 25
    
    db.users.find(
        { age: { $gt: 25 } }
    )
    
    SELECT *
    FROM users
    WHERE age < 25
    
    db.users.find(
       { age: { $lt: 25 } }
    )
    
    SELECT *
    FROM users
    WHERE age > 25
    AND   age <= 50
    
    db.users.find(
       { age: { $gt: 25, $lte: 50 } }
    )
    
    SELECT *
    FROM users
    WHERE user_id like "%bc%"
    
    db.users.find( { user_id: /bc/ } )
    
    SELECT *
    FROM users
    WHERE user_id like "bc%"
    
    db.users.find( { user_id: /^bc/ } )
    
    SELECT *
    FROM users
    WHERE status = "A"
    ORDER BY user_id ASC
    
    db.users.find( { status: "A" } ).sort( { user_id: 1 } )
    
    SELECT *
    FROM users
    WHERE status = "A"
    ORDER BY user_id DESC
    
    db.users.find( { status: "A" } ).sort( { user_id: -1 } )
    
    SELECT COUNT(*) FROM users
    
    db.users.count() 或 db.users.find().count()
    SELECT COUNT(user_id) FROM users
    
    db.users.count( { user_id: { $exists: true } } ) 或 db.users.find( { user_id: { $exists: true } } ).count()
    SELECT COUNT(*) FROM users WHERE age > 30
    
    db.users.count( { age: { $gt: 30 } } ) 或 db.users.find( { age: { $gt: 30 } } ).count()
    SELECT DISTINCT(status) FROM users
    
    db.users.distinct( "status" )
    
    SELECT * FROM users LIMIT 1
    
    db.users.findOne() 或 db.users.find().limit(1)
    SELECT * FROM users LIMIT 5 SKIP 10
    
    db.users.find().limit(5).skip(10)
    
    EXPLAIN SELECT * FROM users WHERE status = "A"
    
    db.users.find( { status: "A" } ).explain()

    五、更新数据(Update操作)

    SQL Update StatementsMongoDB update() Statements
    UPDATE users SET status = "C" WHERE age > 25
    
    db.users.update(
       { age: { $gt: 25 } },
       { $set: { status: "C" } },
       { multi: true }
    )
    
    UPDATE users SET age = age + 3 WHERE status = "A"
    
    db.users.update(
       { status: "A" } ,
       { $inc: { age: 3 } },
       { multi: true }
    )
    

    六、删除数据

    SQL Delete Statements(SQL操作)MongoDB remove() Statements(Mongo操作)
    DELETE FROM users WHERE status = "D"
    
    db.users.remove( { status: "D" } )
    
    DELETE FROM users
    
    db.users.remove({})
    
     更多信息,点击这里查看官方文档http://docs.mongodb.org/manual/reference/sql-comparison/
     
    附录:一些聚合函数的术语与概念对照表
    SQL Terms, Functions, and ConceptsMongoDB Aggregation Operators
    WHERE $match
    GROUP BY $group
    HAVING $match
    SELECT $project
    ORDER BY $sort
    LIMIT $limit
    SUM() $sum
    COUNT() $sum
    join No direct corresponding operator; however, the $unwindoperator allows for somewhat similar functionality, but with fields embedded within the document.

    作者:北羽
    出处:http://www.cnblogs.com/whynever
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接
    如有问题,可以通过418537487@qq.com 联系我,非常感谢。

  • 相关阅读:
    在归并排序中对小数组采用插入排序实现代码
    PAT 1032. Sharing
    1031. Hello World for U
    PAT 1030. Travel Plan
    PAT 1029. Median
    PAT 1028. List Sorting
    PAT 1027. Colors in Mars
    PAT 1026. Table Tennis
    PAT 1025. PAT Ranking
    Several Important Commands in GMT
  • 原文地址:https://www.cnblogs.com/whynever/p/3801185.html
Copyright © 2011-2022 走看看