7-3 MongoDB 基本操作

创建数据库

# 语法
# 有就切换 没有就创建
use DATABASE_NAME

打印数据库列表

show dbs

** MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将存放在 test 数据库中。**

删除数据库

# 先切换到 要删除的数据库下
use  test_chen

# 在删除数据库
db.dropDatabase()




打印集合列表

show collections

创建集合

** db.createCollection(name, options) **

在命令中, name 是要创建的集合的名称. Options 是一个文件,用于指定配置的集合

参数 类型 描述
Name String 要创建的集合名称
Options Document (可选)指定有关内存大小和索引选项

选项​​参数是可选的,所以只需要到指定的集合名称。以下是可以使用的选项列表:

字段 类型 描述
capped Boolean (可选)如果为true,则启用封顶集合。封顶集合是固定大小的集合,会自动覆盖最早的条目,当它达到其最大大小。如果指定true,则需要也指定尺寸参数。
autoIndexID Boolean (可选)如果为true,自动创建索引_id字段的默认值是false。
size number (可选)指定最大大小字节封顶集合。如果封顶如果是 true,那么你还需要指定这个字段。
max number (可选)指定封顶集合允许在文件的最大数量。

当插入文档,MongoDB 第一检查大小字段封顶集合,然后它会检查最大的字段中。

# 切换数据库 
use test_chen

# 创建集合(不带参数)
db.createCollection("mycollection")

# 创建集合(带参数)
db.createCollection("mycol", { capped : true, autoIndexID : true, size : 6142800, max : 10000 } )


# 插入数据的时候 如果不存在改集合 会自动创建 集合
db.yiibai.insert({"name" : "yiibai"})
如果 yiibai 集合不存在 则自动创建

删除集合

# 语法
db.COLLECTION_NAME.drop()

# 删除 名为yiibai的集合
db.yiibai.drop()




数据类型

    String : 这是最常用的数据类型来存储数据。在MongoDB中的字符串必须是有效的UTF-8。

    Integer : 这种类型是用来存储一个数值。整数可以是32位或64位,这取决于您的服务器。

    Boolean : 此类型用于存储一个布尔值 (true/ false) 。

    Double : 这种类型是用来存储浮点值。

    Min/ Max keys : 这种类型被用来对BSON元素的最低和最高值比较。

    Arrays : 使用此类型的数组或列表或多个值存储到一个键。

    Timestamp : 时间戳。这可以方便记录时的文件已被修改或添加。

    Object : 此数据类型用于嵌入式的文件。

    Null : 这种类型是用来存储一个Null值。

    Symbol : 此数据类型用于字符串相同,但它通常是保留给特定符号类型的语言使用。

    Date : 此数据类型用于存储当前日期或时间的UNIX时间格式。可以指定自己的日期和时间,日期和年,月,日到创建对象。

    Object ID : 此数据类型用于存储文档的ID。

    Binary data : 此数据类型用于存储二进制数据。

    Code : 此数据类型用于存储到文档中的JavaScript代码。

    Regular expression : 此数据类型用于存储正则表达式




查询文档

find() 方法

# 语法
db.COLLECTION_NAME.find()

# 例子
db.test_chen.find()


find() 方法将在非结构化的方式显示所有的文件。

pretty() 方法

结果显示在一个格式化的方式,可以使用 pretty() 方法.

# 语法
db.mycol.find().pretty()


#例子
db.mycol.find().pretty()

# 输出
{
       "_id": ObjectId(7df78ad8902c), 
       "title": "MongoDB Overview",
       "description": "MongoDB is no sql database", 
       "by": "tutorials yiibai",
       "url": "http://www.yiibai.com",
       "tags": ["mongodb", "database", "NoSQL"], 
       "likes": "100"
}

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

RDBMS Where子句和MongoDB等同语句

|操作 | 语法| 例子| RDBMS 等同|
|:-----:|:-----:|:-----:|
|Equality| {:} |db.mycol.find({"by":"tutorials yiibai"}).pretty() |where by = 'tutorials yiibai'|
|Less Than |{:{$lt:}} |db.mycol.find({"likes":{$lt:50}}).pretty() |where likes < 50|
|Less Than Equals |{:{$lte:}}| db.mycol.find({"likes":{$lte:50}}).pretty() |where likes <= 50|
|Greater Than |{:{$gt:}} |db.mycol.find({"likes":{$gt:50}}).pretty() |where likes > 50|
|Greater Than Equals | {:{$gte:}} | db.mycol.find({"likes":{$gte:50}}).pretty() |where likes >= 50|
|Not Equals |{:{$ne:}} | db.mycol.find({"likes":{$ne:50}}).pretty() |where likes != 50|

AND 在MongoDB中用法

在 find() 方法,如果通过多个键分离',',那么 MongoDB 处理 AND 条件。AND 基本语法如下所示:

# 语法
db.mycol.find({key1:value1, key2:value2}).pretty()

# 例子
# 下面给出的例子将显示所有的教程,标题是“MongoDB Overview“

db.mycol.find({"by":"tutorials yiibai","title": "MongoDB Overview"}).pretty()

# 对于上面给出的例子相当于where子句 ' where by='yiibai' AND title='MongoDB Overview' , 可以通过任意数量的键值对在 find 子句。

MongoDB中OR

OR条件的基础上要查询文件,需要使用$or关键字。OR 基本语法如下所示:


# 语法
db.mycol.find( 
      { 
           $or: [ 
                   {key1: value1}, 
                   {key2:value2} 
                   ] 
      }
).pretty()

# 例子
db.mycol.find({
     $or:[
             {"by":"yiibai"},
             {"title": "MongoDB Overview"}
         ]
}).pretty()

AND 和 OR 一起使用

下面给出的例子将显示有像的文件大于100,其标题是“MongoDB Overview'或者是'yiibai' 。
等效于 SQL where子句 为 'where likes>10 AND (by = 'yiibai' OR title = 'MongoDB Overview')'

db.mycol.find({
              "likes": {$gt:10}, 
              $or: [
                     {"by": "yiibai"},
                     {"title": "MongoDB Overview"}
                     ]
}).pretty()




插入文档

要插入数据到 MongoDB 集合,需要使用 MongoDB 的 insert()save() 方法。

insert() 方法

# 语法
db.COLLECTION_NAME.insert(document)


# 例子
db.test_one.insert({
   title: 'test', 
   description: 'testestest',
   by: 'chenxiaomo',
   url: 'http://www.baidu.com',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 100
})


# 插入多条
db.post.insert([
{
   title: 'MongoDB Overview', 
   description: 'MongoDB is no sql database',
   by: 'tutorials yiibai',
   url: 'http://www.yiibai.com',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 100
},
{
   title: 'NoSQL Database', 
   description: 'NoSQL database doesn't have tables',
   by: 'tutorials yiibai',
   url: 'http://www.yiibai.com',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 20, 
   comments: [  
      {
         user:'user1',
         message: 'My first comment',
         dateCreated: new Date(2013,11,10,2,35),
         like: 0 
      }
   ]
}
])


# save 方法同上




更新文档

MongoDB的 update()save() 方法用于更新文档的集合。
update()方法更新现有的文档值,而替换现有的文档通过的文件中 save() 方法。

update()方法

更新符合条件的文档

# 语法
db.collection.update(
   ,
   ,
   {
     upsert: ,
     multi: ,
     writeConcern: 
   }
)

参数说明:

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

Save() 方法

替换符合条件的文档

# 语法
db.collection.save(
   ,
   {
     writeConcern: 
   }
)

# 例子
db.mycol.save(
   {
      "_id" : ObjectId(5983548781331adf45ec7), 
      "title":"Yiibai New Topic", 
      "by":"Yiibai"
   }
)

更多实例


# 只更新第一条记录:
db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );

# 全部更新:
db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );

# 只添加第一条:
db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );

# 全部添加加进去:
db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );

# 全部更新:
db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );

# 只更新第一条记录:
db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );




删除文档

remove() 方法

# 语法
db.collection.remove(
   ,
   
)

# 2.6 后的语法
db.collection.remove(
   ,
   {
     justOne: ,
     writeConcern: 
   }
)

参数说明:

  • **query **:(可选)删除的文档的条件。
  • **justOne **: (可选)如果设为 true 或 1,则只删除一个文档。
  • **writeConcern ** :(可选)抛出异常的级别。
# 删除指定条件的
db.col.remove({'title':'MongoDB 教程'})

# 删除指定条件的  并且 指定删除条数
db.col.remove({'title':'MongoDB 教程'},  2)

#  删除全部的
db.col.remove({})






你可能感兴趣的:(7-3 MongoDB 基本操作)