创建数据库
# 语法
# 有就切换 没有就创建
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| {
|Less Than |{
|Less Than Equals |{
|Greater Than |{
|Greater Than Equals | {
|Not Equals |{
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({})