• 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 联系我,非常感谢。

  • 相关阅读:
    java实现第三届蓝桥杯数量周期
    java实现第三届蓝桥杯数量周期
    java实现第三届蓝桥杯数量周期
    java实现第三届蓝桥杯排日程
    java实现第三届蓝桥杯排日程
    java实现第三届蓝桥杯排日程
    java实现第三届蓝桥杯排日程
    java实现第三届蓝桥杯排日程
    使用UE配置Python编程环境
    常用的UltraEdit使用技巧
  • 原文地址:https://www.cnblogs.com/whynever/p/3801185.html
Copyright © 2020-2023  润新知