ldehai

让每个人都能接受平等的教育

嗨,我是@ldehai,iOS / Mac 独立开发者,现居南京。我创建了AventLabs,一个在线学习编程和设计的平台,主要面向初学者。


我正在写一本书《每个人都会编程》

mongodb简介

简介

mongodb是久负盛名的非关系数据库。它以文档为存储单位,与严格的关系数据库形成泾渭分明的区别。

db->collection->document

mongodb的存储结构是数状结构的,可以建多个数据库,数据库底下建多个collection,collection下 是最终的document,存放实际的数据。这个结构类似于硬盘上文件的组织方式。有分区、目录、文件。

如果非要跟关系数据库做类比,那么这里的collection就相当于表,document相当于表中的一行数据。 最大的区别在于,同一个collection下的文档不需要有一样的数据字段,是灵活的。

安装

理解一件新东西的最好方法自然是动手试试,现在就来安装吧。 mongodb安装方法参照官网.我用的阿里云服务器,使用的是centos6.5,64位系统。参照以下地址完成安装。 https://docs.mongodb.org/manual/tutorial/install-mongodb-enterprise-on-red-hat/

mongod与mongo

跟其他数据库系统类似,mongodb也有自己的服务进程mongod,centos下以服务的形式开启的方式为:

sudo service mongod start

这样终端窗口关了之后,程序还能继续运行。当然,你也可以在命令行下输入mongod启动,只是窗口关了程序也停了。 mongodb的交互程序是mongo(在mongod启动后,新开一个命令窗口输入mongo),输入的命令发送给mongod进程,然后返回处理结果。

use database_name

mongodb没有新增数据库的命令,可以使用use “数据库名” 新建数据库,但新建的数据库实际上没有写入 存储,只有当在下面新增collection时才会实际创建。 例如:

use aventlabs
db.createCollection('member')
show dbs

使用help查看当前可用的所有命令

查看当前数据库中的所有Collection

show collections

插入记录

使用show dbs命令可以查看当前已经建好的数据库。(注意命令中的大小写) 先来插入一个记录看看:

db.member.insert({
   "name" : "andy",
   "email" : "ldehai@gmail.com",
})

在mongo命令行下输入以上命令,回车,就成功插入了一条记录,反馈如下:

WriteResult({ "nInserted" : 1 })

查询member中的记录:

db.memer.find()

查询结果:

{ "_id" : ObjectId("5638735b01e6622e13ac34fb"), "name" : "andy", "email" : "ldehai@gmail.com" }

条件查询,只查name为andy的一条记录:

db.member.findone({'name':'andy'})

排序

db.member.find().sort({name:1}})

1和-1表示正序和倒序

限制返回的数据条数

db.member.find().sort({name:1}).limit(1)

注意这里,命令可以串起来使用。另外,如果使用pymongo做排序,sort参数的需要写成如下形式,不然会报错,详细讨论见 这里Using .sort with PyMongo

db.member.find().sort([("createdate", -1), ("name", 1)])

更多查询命令,详见官网文档db.collection.find

删除记录

db.member.remove({'name':'andy'})

进一步的操作方法,参照官网教程使用mongo命令行工具操作mongodb

使用python的同学,可以看使用pymongo操作mongodb

使用tornado的同学,可以看tornado+pymongo+mongodb

motor是跟pymongo类似的一个mongodb驱动库,不过它支持异步操作,有兴趣的同学可以看这里Motor and Pymongo

关于更多mongodb的详细特性,请参见官方文档

最近的文章

使用Gitbook搭建写作环境

gitbook简介Gitbook.com是一个写作和出版的平台,他们使用的系统是开源的。支持Markdown和AsciiDoc格式,最后输出的是静态网页。还可以通过calibre把书转成pdf、epub、mobi等常用格式,方便在各种设备上阅读。要达成的目标由于Gitbook和Markdown的开放性,可以在本地搭建写作环境,对我来说很有吸引力。我使用如下的组合来搭建我的写作环境:gitbook+atom+github+calibreGitbook:用来创建书,遵循它的文件组织形式,可以生...…

gitbook继续阅读
更早的文章

Android Support Library简介

Android系统每年都会有版本更新,新版本必然带来新的特性。但是,要想使用这些新特性,手机的系统就要更新到最新的版本。大家都知道,iPhone,是苹果生产的,iOS版本的升级只需要考虑自己发布的产品就好了。Android不一样,它是一个开放的生态系统,代码开源,只要是手机厂商都能生产搭载Android系统的手机,但用的硬件却是五花八门的。一个手机操作系统要想正常的运行,必须能够跟手机的硬件兼容,所以大部分手机厂商使用的系统都是在官方版本基础上修改得来的,想升级不能直接拿官方版本直接安装,...…

Android继续阅读