zoukankan      html  css  js  c++  java
  • C#中使用MongoDB学习笔记(二):初步了解MongoDB的基本语法

      嗨! 昨天我们已经将Mongodb成功在Linux上安装了,今天让我们一起来学习一下Mongodb的基本语法和知识点,对比一下传统数据库有哪些方面不一样,废话不多说 进入主题

    创建数据库

    DataBase_Name 皆指数据库名字

    Table_Name 在MondoDB中为集合名 数据库中为表名  即 Collection=Table

    Mongodb:

    1.Linux连接客户端执行命令Use DataBase_Name (如果数据库不存在,则创建数据库,否则切换到指定数据库。)

    SQL Server 

    1.SQL语句创建: Create DataBase DataBase_Name

    删除数据库

    不建议使用命令删除数据库 推荐使用可视化工具删除 ,避免出现错误

    创建集合

    MongoDB:db.createCollection(Table_Name,options)

    • name: 要创建的集合名称
    • options: 可选参数, 指定有关内存大小及索引的选项

    Sql Server: Create Table Table_Name(

          id int ,
          name varchar(20)             )

    上面两种语法可以看出 两个数据库的在创建表过程中语法有很大的区别 Mongodb不需要事先指定列名,而传统的关系型数据库必须事先指定数据列名和数据类型 所以Mongodb可以存储不同结构的数据不需要事先定义数据格式

    插入数据

    MongoDB: db.T.insert({title: 'MongoDB', 

                                        description: 'MongoDB 是一个 Nosql 数据库',

                                        likes: 100
                                       })

    Sql Server : Insert Into tname(id,name) Values(1,'name')

    T:上一步建立的集合名称

    tname:上一步建立的数据表

    查询数据

    我们用查询语法显示我们插入的数据

    Mongodb:db.getCollection('T').find(query, projection)

    • query :可选,使用查询操作符指定查询条件
    • projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

    Sql server: Select * From tname

    以上集合字段很少,在实际工作中可能有很多字段 如果全部返回 数据量太大会浪费不必要的网络传输 所以 我们要按需取值

    Mongodb:db.getCollection('T').find({},{'title':1}) 

    Sql Server: Select name from tname

    Mongodb中是将需要返回的字段以Json的格式当做参数传递给方法 

    Sql sever中是将需要返回的字段替换* 即可

    注:返回参数中 标记为1的为显示字段 标记为0的为不返回字段

    更新数据

    db.collection.update(
       <query>,
       <update>,
       {
         upsert: <boolean>,
         multi: <boolean>,
         writeConcern: <document>
       }
    )
    • query : update的查询条件,类似sql update查询内where后面的。
    • update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
    • upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
    • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
    • writeConcern :可选,抛出异常的级别。

    db.T.update({'title':'MongoDB'},{$set:{'title':'MongoDB123'}})

    Sql Server:Update tanme set name='mongodb' where name='name'

    这一点Mongodb和Sql Server 很相似都是根据条件去修改,但是不同的是Mongodb 在Update()执行完后 需要调用Save(docuemt) 将修改的数据保存

     删除数据

     Mongodb:db.collection.remove(

       <query>,
       <justOne>
    )
    • query :(可选)删除的文档的条件。
    • justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
    • writeConcern :(可选)抛出异常的级别。
    Mongodb:db.getCollection('T').remove({'title':'MongoDB123'}) 注:我的数据里面只有一条数据 所以没有设置True 在使用时要考虑清楚

    Sql server:delete * from tname where name='mongodb'

    remove() 方法 并不会真正释放空间。

    需要继续执行 db.repairDatabase() 来回收磁盘空间。

    > db.repairDatabase()
    或者
    > db.runCommand({ repairDatabase: 1 })
    总结:
    • Mongodb的数据表不用预先定义数据格式,而关系型数据库需要预先定义数据格式和列名
    • Mongodb的Update方法调用之后 需要调用Save方法来保存更新数据库
    • Mongodb的Find方法 可以用1和0来标识需要返回的字段或者不返回的字段
    • Mongodb可以存储数组结构的数据,而关系型数据库不能
     
  • 相关阅读:
    【云图】如何制作附近实体店的地图?-微信微博支付宝
    【云图】如何设置支付宝里的家乐福全国连锁店地图?
    【云图】如何设置微信里的全国实体店地图?
    【云图】如何制作官网上的实体店分布图?
    MYSQL 锁机制 分析
    数据结构-线性表-栈-递归
    mysql 异步执行 query //@todo
    C语言操作mysql
    linux gcc头文件搜索路径
    LINUX下动态库及版本号控制
  • 原文地址:https://www.cnblogs.com/WeekSun/p/11416839.html
Copyright © 2011-2022 走看看