MongoDB知识小结

一、术语

RDBMS MongoDB
数据库 数据库
表格 集合
文档
字段
表联合 嵌套文档
主键 主键 (MongoDB 提供了 key 为 _id )

数据库

数据库名可以是满足以下条件的任意UTF-8字符串。

  • 不能是空字符串("")。
  • 不得含有' '(空格)、.、$、/、\和\0 (空字符)。
  • 应全部小写。
  • 最多64字节。

有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库

  • admin
  • local
  • config

集合

集合就是 MongoDB 文档组,类似于 RDBMS (关系数据库管理系统:Relational Database Management System)中的表格。
集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。
当第一个文档插入时,集合就会被创建。
合法的集合名

  • 集合名不能是空字符串""。
  • 集合名不能含有\0字符(空字符),这个字符表示集合名的结尾。
  • 集合名不能以"system."开头,这是为系统集合保留的前缀。
  • 用户创建的集合名字不能含有保留字符。有些驱动程序的确支持在集合名里面包含,这是因为某些系统生成的集合中包含该字符。除非你要访问这种系统创建的集合,否则千万不要在名字里出现$。

文档

文档是一组键值(key-value)对(即 BSON)。MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。
需要注意的是:

  • 文档中的键/值对是有序的。
  • 文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。
  • MongoDB区分类型和大小写。
  • MongoDB的文档不能有重复的键。
  • 文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。

文档键命名规范:

  • 键不能含有\0 (空字符)。这个字符用来表示键的结尾。
  • .和$有特别的意义,只有在特定环境下才能使用。
  • 以下划线"_"开头的键是保留的(不是严格要求的)。

字段

二、常用命令

1. 连接数据库

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

实例
连接本地数据库服务器,端口是默认的。。

mongodb://localhost

使用用户名fred,密码foobar登录localhost的admin数据库。

mongodb://fred:foobar@localhost

使用用户名fred,密码foobar登录localhost的baz数据库

mongodb://fred:foobar@localhost/baz

其它...

2. 查看所有数据库

show dbs

3. 查看当前数据库

db

4. 创建数据库、连接到指定数据库use database 如果数据库不存在。

use xxx

5. 删除数据库

先用use xxx到指定数据库xxx,然后再执行删除命令db.dropDatabase()。

db.dropDatabase()

6. 查看已有集合

show collections

7. 创建集合

db.createCollection(name, options)

实例

db.createCollection("col")

在 MongoDB 中,你不需要创建集合。当你插入一些文档时,MongoDB 会自动创建集合

db.mycol2.insert({"name" : "菜鸟教程"})

注意: 在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。

8.删除集合

db.collection.drop()

实例

db.mycol2.drop()

9.查看文档

find()查看文档,除了 find() 方法之外,还有一个 findOne() 方法,它只返回一个文档。

db.COLLECTION_NAME.find()

条件运算符

操作 格式 范例
等于 {<key>:<value>} db.col.find({"by":"菜鸟教程"}).pretty()
小于 {<key>:{$lt:<value>}} db.col.find({"likes":{$lt:50}}).pretty()
小于或等于 {<key>:{$lte:<value>}} db.col.find({"likes":{$lte:50}}).pretty()
大于 {<key>:{$gt:<value>}} db.col.find({"likes":{$gt:50}}).pretty()
大于或等于 {<key>:{$gte:<value>}} db.col.find({"likes":{$gte:50}}).pretty()
不等于 {<key>:{$ne:<value>}} db.col.find({"likes":{$ne:50}}).pretty()

AND 条件和OR 条件

MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。

db.col.find({"by":"菜鸟教程", "title":"MongoDB 教程"})

MongoDB OR 条件语句使用了关键字 $or,语法格式如下

db.col.find(
   {
      $or: [
         {key1: value1}, {key2:value2}
      ]
   }
)

实例

db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()

$type

$type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果。

db.col.find({"title" : {\$type : 'string'}})

Limit与Skip方法

limit()方法基本语法如下所示:

db.COLLECTION_NAME.find().limit(NUMBER)

除了可以使用limit()方法来读取指定数量的数据外,还可以使用skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数

db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

10.插入文档

insert() 或 save() 方法向集合中插入文档,语法如下:

db.COLLECTION_NAME.insert(document)

实例

db.col.insert({mycol: 'MongoDB 教程', 
    description: 'MongoDB 是一个 Nosql 数据库',
    by: '菜鸟教程',
    url: 'http://www.runoob.com',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes: 100
})

插入文档也可以使用 db.col.save(document) 命令。如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。

11.更新文档

update() 和 save() 方法来更新集合中的文档。
update() 方法用于更新已存在的文档。语法格式如下:

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 :可选,抛出异常的级别

实例
通过 update() 方法来更新标题(title)

db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})

save() 方法通过传入的文档来替换已有文档。语法格式如下

db.collection.save(
   <document>,
   {
     writeConcern: <document>
   }
)

实例
以下实例中我们替换了 _id 为 56064f89ade2f21f36b03136 的文档数据:

db.col.save({
    "_id" : ObjectId("56064f89ade2f21f36b03136"),
    "title" : "MongoDB",
    "description" : "MongoDB 是一个 Nosql 数据库",
    "by" : "Runoob",
    "url" : "http://www.runoob.com",
    "tags" : [
            "mongodb",
            "NoSQL"
    ],
    "likes" : 110
})

12.删除文档

remove()函数是用来移除集合中的数据。语法格式如下:

db.collection.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>
   }
)

参数说明:

  • query :(可选)删除的文档的条件。
  • justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
  • writeConcern :(可选)抛出异常的级别。
    实例
db.col.remove({'title':'MongoDB 教程'})

猜你喜欢

转载自www.cnblogs.com/superlizhao/p/12030729.html
今日推荐