未加星标

MongoDB 快速入门整理

字体大小 | |
[数据库(综合) 所属分类 数据库(综合) | 发布者 店小二05 | 时间 2016 | 作者 红领巾 ] 0人收藏点击收藏

首先启动数据库,控制台输入 mongo 进入数据库命令窗口。

创建数据库

MongoDB use DATABASE_NAME 用于创建数据库。该命令如果数据库不存在,将创建一个新的数据库, 否则将返回现有的数据库。

语法:

use DATABASE语句的基本语法如下:

> use DATABASE_NAME
例子:

如果想创建一个数据库名称为 <mydb> , 那么 use DATABASE 语句应该如下:

> use mydb
switched to db mydb

要检查当前选择的数据库使用命令 db

> db
mydb

如果想查询数据库列表,那么使用命令 show dbs .

> show dbs
local 0.78125GB
test 0.23012GB

所创建的数据库(mydb)不存在于列表中。要显示的数据库,需要至少插入一个文档进去。

> db.movie.insert({"name":"yiibai tutorials"})
> show dbs
local 0.78125GB
mydb 0.23012GB
test 0.23012GB

MongoDB的默认数据库是test。 如果没有创建任何数据库,那么集合将被保存在测试数据库。

删除数据库

MongoDB db.dropDatabase() 命令用于删除现有的数据库。

语法

dropDatabase()指令的基本语法如下:

db.dropDatabase()

这将删除选定的数据库。如果没有选择任何数据库,那么它会删除默认的“test”数据库

例子:

如果想删除新的数据库 <mydb> , 那么 dropDatabase() 命令将如下所示:

>use mydb
switched to db mydb
>db.dropDatabase()
>{ "dropped" : "mydb", "ok" : 1 }
创建集合

MongoDB 的 db.createCollection(name, options) 用于创建集合。 在命令中, name 是要创建集合的名称。 Options 是一个文档,用于指定集合的配置。

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

选项参数是可选的,所以需要指定集合的唯一名字。

语法

createCollection()方法的基本语法如下

>use test
switched to db test
>db.createCollection("mycollection")
{ "ok" : 1 }

可以通过使用 show collections 命令来检查创建的集合

>show collections
mycollection
system.indexes
选项列表 字段 类型 描述 capped Boolean(可选) 如果为true,它启用上限集合。上限集合是一个固定大小的集合,当它达到其最大尺寸会自动覆盖最老的条目。 如果指定true,则还需要指定参数的大小。 autoIndexID Boolean(可选) 如果为true,自动创建索引_id字段。默认的值是 false. size number(可选) 指定的上限集合字节的最大尺寸。如果capped 是true,那么还需要指定这个字段。 max number(可选) 指定上限集合允许的最大文件数。尽管插入文档,MongoDB首先检查字段集合的上限大小,那么它会检查最大字段。 语法 : >db.createCollection("mycol", { capped : true, autoIndexID : true, size : 6142800, max : 10000 } )
{ "ok" : 1 }

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

>db.yiibai.insert({"name" : "yiibai"})
>show collections
mycol
mycollection
system.indexes
yiibai
删除集合

MongoDB 的 db.collection.drop() 用于从数据库中删除集合。

语法

drop() 命令的基本语法如下

db.COLLECTION_NAME.drop()
例子:

下面给出的例子将删除给定名称的集合:mycollection

>use mydb
switched to db mydb
>db.mycollection.drop()
true
插入文档

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

语法

insert()命令的基本语法如下:

>db.COLLECTION_NAME.insert(document)
例子
>db.mycol.insert({
_id: ObjectId(7df78ad8902c),
title: 'MongoDB Overview',
description: 'MongoDB is no sql database',
by: 'yiibai tutorials',
url: 'http://www.yiibai.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})

这里 mycol 是我们的集合名称,它是在之前的教程中创建。如果集合不存在于数据库中,那么MongoDB创建此集合,然后插入文档进去。

在如果我们不指定 _id 参数插入的文档,那么 MongoDB 将为文档分配一个唯一的 ObjectId 。

_id 是12个字节十六进制数在一个集合的每个文档是唯一的。 12个字节被划分如下:

_id: ObjectId(4 bytes timestamp, 3 bytes machine id, 2 bytes process id, 3 bytes incrementer)

要以单个查询插入多个文档,可以通过文档 insert() 命令的数组方式。

例子 >db.post.insert([
{
title: 'MongoDB Overview',
description: 'MongoDB is no sql database',
by: 'yiibai tutorials',
url: 'http://www.yiibai.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
},
{
title: 'NoSQL Database',
description: 'NoSQL database doesn't have tables',
by: 'yiibai tutorials',
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
}
]
}
])
查询文档

要从集合查询MongoDB数据,需要使用MongoDB的 find() 方法。

语法

find()方法的基本语法如下

>db.COLLECTION_NAME.find()

find() 方法将在非结构化的方式显示所有的文件。 如果显示结果是格式化的,那么可以用 pretty() 方法。

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

####例子

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

除了 find() 方法还有 findOne() 方法,仅返回一个文档。

RDBMS Where子句等效于MongoDB

查询文档在一些条件的基础上,可以使用下面的操作

操作 语法 示例 RDBMS等效语句 Equality {<key>:<value>} db.mycol.find({“by”:”yiibai tutorials”}).pretty() where by = ‘yiibai tutorials’ Less Than {<key>:{$lt:<value>}} db.mycol.find({“likes”:{$lt:50}}).pretty() where likes < 50 Less Than Equals {<key>:{$lte:<value>}} db.mycol.find({“likes”:{$lte:50}}).pretty() where likes <= 50 Greater Than {<key>:{$gt:<value>}} db.mycol.find({“likes”:{$gt:50}}).pretty() where likes > 50 Greater Than Equals {<key>:{$gte:<value>}} db.mycol.find({“likes”:{$gte:50}}).pretty() where likes >= 50 Not Equals {<key>:{$ne:<value>}} db.mycol.find({“likes”:{$ne:50}}).pretty() where likes != 50 AND 在 MongoDB 语法

在 find() 方法,如果您传递多个键通过”,”将它们分开,那么MongoDB对待它就如 AND 条件一样。基本语法如下所示:

>db.mycol.find({key1:value1, key2:value2}).pretty()
例子

下面给出的例子将显示所有教程含“yiibai tutorials”和其标题是“MongoDB Overview”

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

对于上面给出的例子相当于 where 子句: where by='yiibai tutorials' AND title='MongoDB Overview' 。可以传递任何数目的键-值对在find子句。

OR 在 MongoDB 语法

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

>db.mycol.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
例子

下面给出的例子将显示所有撰写含有 ‘yiibai tutorials’ 或是标题为 ‘MongoDB Overview’ 的教程

>db.mycol.find({$or:[{"by":"tutorials point"},{"title": "MongoDB Overview"}]}).pretty()
{
"_id": ObjectId(7df78ad8902c),
"title": "MongoDB Overview",
"description": "MongoDB is no sql database",
"by": "yiibai tutorials",
"url": "http://www.yiibai.com",
"tags": ["mongodb", "database", "NoSQL"],
"likes": "100"
}
使用 AND 和 OR 在一起 例子

下面给出的例子显示有喜欢数大于100 的文档,其标题要么是 ‘MongoDB Overview’ 或 ‘yiibai tutorials’. 等效于SQL的where子句: where likes>10 AND (by = 'yiibai tutorials' OR title = 'MongoDB Overview')

>db.mycol.find("likes": {$gt:10}, $or: [{"by": "yiibai tutorials"}, {"title": "MongoDB Overview"}] }).pretty()
{
"_id": ObjectId(7df78ad8902c),
"title": "MongoDB Overview",
"description": "MongoDB is no sql database",
"by": "yiibai tutorials",
"url": "http://www.yiibai.com",
"tags": ["mongodb", "database", "NoSQL"],
"likes": "100"
}
更新文档

MongoDB的 update() 和 save() 方法用于更新文档到一个集合。 update()方法将现有的文档中的值更新,而save()方法使用传递到save()方法的文档替换现有的文档。

MongoDB Update() 方法 语法

update()方法的基本语法如下 >db.COLLECTION_NAME.update(SELECTIOIN_CRITERIA, UPDATED_DATA)
例子

考虑mycol集合有如下数据。

{ "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"}
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai Yiibai Overview"}

下面的例子将设置其标题“MongoDB Overview”的文件为新标题为“New MongoDB Tutorial”

>db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New MongoDB Tutorial'}})
>db.mycol.find()
{ "_id" : ObjectId(5983548781331adf45ec5), "title":"New MongoDB Tutorial"}
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai Tutorial Overview"}

默认情况下,MongoDB将只更新单一文件,更新多,需要一个参数 ‘multi’ 设置为 true。

>db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New MongoDB Tutorial'}},{multi:true})
MongoDB Save() 方法

save() 取代方法,通过 save()方法取代新文档

语法

mongodb 的 save()方法如下所示的基本语法:

>db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})
例子

下面的例子将替换该文件 _id '5983548781331adf45ec7'

>db.mycol.save(
{
"_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai Yiibai New Topic", "by":"Yiibai Yiibai"
}
)
>db.mycol.find()
{ "_id" : ObjectId(5983548781331adf45ec5), "title":"Yiibai Yiibai New Topic", "by":"Yiibai Yiibai"}
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai Yiibai Overview"}
删除文档

MongoDB 的 remove() 方法用于从集合中删除文档。remove()方法接受两个参数。一个是标准缺失,第二是justOne标志

deletion criteria : 根据文件(可选)删除条件将被删除。

justOne : (可选)如果设置为true或1,然后取出只有一个文档。

语法

remove()方法的基本语法如下

>db.COLLECTION_NAME.remove(DELLETION_CRITTERIA)
例子

考虑mycol集合有如下数据。

{ "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"}
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai Yiibai Overview"}

下面的例子将删除所有的文件,其标题为 ‘MongoDB Overview’

>db.mycol.remove({'title':'MongoDB Overview'})
>db.mycol.find()
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai Toturials Overview"}

只删除一个

如果有多个记录,并要删除仅第一条记录,然后在 remove() 方法设置参数 justOne 。

>db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
删除所有文件

如果没有指定删除条件,则MongoDB将从集合中删除整个文件。这相当于SQL的 truncate 命令。

>db.mycol.remove()
>db.mycol.find()

本文数据库(综合)相关术语:系统安全软件

主题: MongoDBSQL数据RIA删除TI数据库CTI2G5G
分页:12
转载请注明
本文标题:MongoDB 快速入门整理
本站链接:http://www.codesec.net/view/480596.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 数据库(综合) | 评论(0) | 阅读(27)