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可以存储数组结构的数据,而关系型数据库不能
 

 

posted @ 2019-08-27 10:42  发黑的太阳  阅读(391)  评论(0编辑  收藏  举报