`
banxi1988
  • 浏览: 154226 次
  • 性别: Icon_minigender_1
  • 来自: 桂林
社区版块
存档分类
最新评论

mongoDB初体验

阅读更多
一直以来都比较喜欢NoSQL。首先是名字好听。
然后前不久下了mongoDB。还借来了mongoDB权威指南一书。
大概浏览了一下。也在mongoDB的官网上mongo shell上体验了一下。
非常不错,而且mongoDB用的javascript,json也都是我喜欢的。
mongoDB官网:mongodb.org
从这个地点开始,就应该能够找到体验mongoDB的所有东西了。
下载mongodb。和相关的驱动啊,还有文档。我是使用wget来下载。就不用在线查看了。
mongoDB下载之后就可以直接使用了。
下面是我下载下来的文档,有些已经解压了:
banxi1988@banxi:~/work/mongoDB$ ls
mongo-2.6.5.jar  mongodb-linux-i686-2.0.0      SQL+to+Mongo+Mapping+Chart_files
mongo_api        mongodb-linux-i686-2.0.0.tgz
mongo_api.zip    mongo_docs.zip
banxi1988@banxi:~/work/mongoDB$ 

然后将它copy到我主目录下的bin文件中吧。操作如下:
banxi1988@banxi:~/work/mongoDB$ cp mongodb-linux-i686-2.0.0.tgz  ~/bin/
banxi1988@banxi:~/work/mongoDB$ cd ~/bin/
banxi1988@banxi:~/bin$ ls
mongodb-linux-i686-2.0.0.tgz  tomcat7
banxi1988@banxi:~/bin$ tar zxf mongodb-linux-i686-2.0.0.tgz 
banxi1988@banxi:~/bin$ ls
mongodb-linux-i686-2.0.0  mongodb-linux-i686-2.0.0.tgz  tomcat7
banxi1988@banxi:~/bin$ rm mongodb-linux-i686-2.0.0.tgz 
banxi1988@banxi:~/bin$ ls
mongodb-linux-i686-2.0.0  tomcat7
banxi1988@banxi:~/bin$ cd mongodb-linux-i686-2.0.0/
banxi1988@banxi:~/bin/mongodb-linux-i686-2.0.0$ ls
bin  GNU-AGPL-3.0  README  THIRD-PARTY-NOTICES
banxi1988@banxi:~/bin/mongodb-linux-i686-2.0.0$ cd bin/
banxi1988@banxi:~/bin/mongodb-linux-i686-2.0.0/bin$ ls
bsondump  mongod     mongoexport  mongoimport   mongos      mongostat
mongo     mongodump  mongofiles   mongorestore  mongosniff  mongotop
banxi1988@banxi:~/bin/mongodb-linux-i686-2.0.0/bin$ 


可以看到mongoDB的这个已经都是一些已经编译好了的bin文件了。
主要的是mongod。对应于mysql的mysqld
另一个是mongo对应于mysql的mysql


在启动mongod之前首先要建立数据库目录。默认的数据库目录是/data/db/,在启动的时候也可以另的目录。
如果使用默认目录的话,在启动之前要确保有写的权限。
下面的操作可以达到这样的效果。
如下:
banxi1988@banxi:~/bin/mongodb-linux-i686-2.0.0/bin$ mkdir -p /data/db
mkdir: 无法创建目录"/data": 权限不够
banxi1988@banxi:~/bin/mongodb-linux-i686-2.0.0/bin$ sudo mkdir -p /data/db
[sudo] password for banxi1988: 
banxi1988@banxi:~/bin/mongodb-linux-i686-2.0.0/bin$ ls /data/db/
banxi1988@banxi:~/bin/mongodb-linux-i686-2.0.0/bin$ sudo chown -R $USER:$USER /data/db/
banxi1988@banxi:~/bin/mongodb-linux-i686-2.0.0/bin$ ls -l /data/db/
总用量 0


在正式启动mongod之前,我们还是先了解下mongod的一些启动选项吧。
可能通过$./mongod --help来查看。

--dbpath   arg   指定数据目录,默认值是/data/db/(上面已经创建好了)。每个mongod进程都需要独立的数据目录。(在新的2.0中也许不是这样的啦)因为有下面一个选项
  --directoryperdb            each database will be stored in a separate 
                              directory
--port arg  指定服务器监听端口号,默认端口是27017。多个mongod进程要指定不同的端口号。
--fork    以守护进程的方式运行mongoDB,创建服务器进程。

--logpath arg  指定输出日志的文件。它会将已经有的文件覆盖掉,如果不想覆盖则需要使用--logappend选项。


启动信息如下:
banxi1988@banxi:~/bin/mongodb-linux-i686-2.0.0/bin$ ./mongod --logpath mongod.log --fork
forked process: 2811
all output going to: /home/banxi1988/bin/mongodb-linux-i686-2.0.0/bin/mongod.log
banxi1988@banxi:~/bin/mongodb-linux-i686-2.0.0/bin$ cat mongod.log 
Fri Nov  4 10:20:38 
Fri Nov  4 10:20:38 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.
Fri Nov  4 10:20:38 
Fri Nov  4 10:20:38 [initandlisten] MongoDB starting : pid=2811 port=27017 dbpath=/data/db/ 32-bit host=banxi
Fri Nov  4 10:20:38 [initandlisten] 
Fri Nov  4 10:20:38 [initandlisten] ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
Fri Nov  4 10:20:38 [initandlisten] **       see http://blog.mongodb.org/post/137788967/32-bit-limitations
Fri Nov  4 10:20:38 [initandlisten] **       with --journal, the limit is lower
Fri Nov  4 10:20:38 [initandlisten] 
Fri Nov  4 10:20:38 [initandlisten] db version v2.0.0, pdfile version 4.5
Fri Nov  4 10:20:38 [initandlisten] git version: 695c67dff0ffc361b8568a13366f027caa406222
Fri Nov  4 10:20:38 [initandlisten] build info: Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION=1_37
Fri Nov  4 10:20:38 [initandlisten] options: { fork: true, logpath: "mongod.log" }
Fri Nov  4 10:20:38 [initandlisten] waiting for connections on port 27017
Fri Nov  4 10:20:38 [websvr] admin web console waiting for connections on port 28017
banxi1988@banxi:~/bin/mongodb-linux-i686-2.0.0/bin$ 



关闭mongodb的方法如下:
像其它linux进程一样
优雅且稳妥的方法是向mongod发送SIGINT 或者SIGTERM信号。
如果服务器是在前台进程运行的话直接Ctrl-C就可以了。
否则可以使用
$kill -2 pid  #-2 sigint
$kill pid  #  默认是sigterm
当mongod收到上面的信号后,会稳妥的退出。
注意:千万不要使用$kill -9 pid 来杀死进程。这样会导致数据文件损坏。

还可以使用mongod本身的--shutdown选项。
或者在mongo shell中在admin数据库下使用如:
>use admin
       switched to db admin
>db.shutdownServer()
server should be down...



启动了mongod后台服务进程之后,到了真正体验mongo的时候。
像mysql提供了一个mysql客户端一样。mongo提供了一个名为mongo的shell。
这是一个JavaScript的Shell。
1.运行,如下:
banxi1988@banxi:~/bin/mongodb-linux-i686-2.0.0/bin$ ./mongo
MongoDB shell version: 2.0.0
connecting to: test
> x=1988
1988
> x/2
994
> Math.sin(Math.PI/2);
1
> new Date('2011/11/10')
ISODate("2011-11-09T16:00:00Z")

mongo shell有三个显示特点:
(1)mongo shell会在启动时自动连接mongoDB服务器mongod。
(2)shell是功能完备的JavaScript解释器。,可以运行任何JavaScript程序。上面有示例了。
  (3) shell会自动 检测输入的Javascript语句是否写完。如果没有写完,在下一行接着写。同时shell也有一些非javascript的扩展。

(2) 数据操作。这里没有明显的创建数据库的操作。
> use foo
switched to db foo
> db
foo
> post={"title":"my blog post",
... "content":"Here,is a test",
... "date":new Date()}
{
	"title" : "my blog post",
	"content" : "Here,is a test",
	"date" : ISODate("2011-11-10T10:54:37.802Z")
}
> db.foo.insert(post)
> db.foo.find()
{ "_id" : ObjectId("4ebbad820c3f8817c7f6ed57"), "title" : "my blog post", "content" : "Here,is a test", "date" : ISODate("2011-11-10T10:54:37.802Z") }
> 


在选择使用数据库时如果没有此名称的数据库则会创建。
这个与mysql比较接近,利于熟悉mysql的人学习使用。
查看下使用帮助,然后尝试了下show dbs命令。如下:
> help
	db.help()                    help on db methods
	db.mycoll.help()             help on collection methods
	rs.help()                    help on replica set methods
	help admin                   administrative help
	help connect                 connecting to a db help
	help keys                    key shortcuts
	help misc                    misc things to know
	help mr                      mapreduce

	show dbs                     show database names
	show collections             show collections in current database
	show users                   show users in current database
	show profile                 show most recent system.profile entries with time >= 1ms
	show logs                    show the accessible logger names
	show log [name]              prints out the last segment of log in memory, 'global' is default
	use <db_name>                set current database
	db.foo.find()                list objects in collection foo
	db.foo.find( { a : 1 } )     list objects in foo where a == 1
	it                           result of the last line evaluated; use to further iterate
	DBQuery.shellBatchSize = x   set default number of items to display on shell
	exit                         quit the mongo shell
> show dbs
foo	0.0625GB
local	(empty)
> 

令我意外的是,刚创建的foo数据库居然有0.0625GB。
我查看下是否是确实
如果,确实mongo创建一看起来很大的三个文件:
banxi1988@banxi:~/bin/mongodb-linux-i686-2.0.0/bin$ ls -lsh /data/db/foo.
foo.0   foo.1   foo.ns  
banxi1988@banxi:~/bin/mongodb-linux-i686-2.0.0/bin$ ls -lsh /data/db/foo.0
17M -rw------- 1 banxi1988 banxi 16M 2011-11-10 18:54 /data/db/foo.0
banxi1988@banxi:~/bin/mongodb-linux-i686-2.0.0/bin$ ls -lsh /data/db/foo.1
32M -rw------- 1 banxi1988 banxi 32M 2011-11-10 18:54 /data/db/foo.1
banxi1988@banxi:~/bin/mongodb-linux-i686-2.0.0/bin$ ls -lsh /data/db/foo.ns
17M -rw------- 1 banxi1988 banxi 16M 2011-11-10 18:54 /data/db/foo.ns
banxi1988@banxi:~/bin/mongodb-linux-i686-2.0.0/bin$ 


初始体验在此要进入另一个阶段。即对mongo更清晰的认识。从下一篇文章开始。
关于mongo 体验强烈推荐到mongo官网上的一个在线shell去体验学习。

未完待续--------------
0
1
分享到:
评论

相关推荐

    mongodb初体验

    mongodb初体验,mongodb初体验,mongodb初体验,mongodb初体验

    关于node.js初体验. 如何搭建并完成一个简单的后台, 配合mongodb数据库, 实现信息的增删改查功能

    关于node.js学习时, 如何搭建并完成一个简单的后台, 配合mongodb数据库, 实现信息的增删改查功能(在这里我偷了个小懒,就实现了查询和增加功能, 后边再完善叭), 具体的操作过程在博客中写的非常详细, 包括代码有块...

    头歌springboot初体验

    在"头歌springboot初体验"中,我们可以探讨以下几个关键知识点: 1. **起步依赖(Starter Dependencies)**:Spring Boot通过起步依赖管理项目中的依赖。例如,如果你想使用Spring MVC进行Web开发,只需添加`spring...

    Web基础——WebApp之初体验(三)

    在本篇关于“Web基础——WebApp之初体验(三)”的文章中,我们将深入探讨Web应用程序(WebApp)的关键概念和技术,以及它们如何为用户提供便捷的在线体验。WebApp是互联网技术的重要组成部分,它们允许用户在浏览器...

    feapder 爬虫框架初体验代码

    在这个"feapder爬虫框架初体验代码"中,我们将深入探讨Feapder的核心特性和基本用法。 1. **Feapder简介** Feapder是一个轻量级的爬虫框架,它提供了丰富的内置功能,如自动处理反爬策略、数据持久化、任务调度等...

    Zula-online-shopping:基于Mongodb,NodeJS和Express的项目

    【标题】"Zula在线购物"是一个利用现代Web技术构建的电子商务平台,它结合了Mongodb作为数据库系统,NodeJS作为后端服务器平台,以及Express作为应用框架。这个项目展示了如何将这些技术融合在一起,创建一个功能...

    egg-admin-back:egg-admin后台管理系统后端,基于eggjs+mongodb

    4. **错误处理**:统一的错误处理机制,确保生产环境的稳定性和用户体验。 5. **日志记录**:记录操作日志,便于追踪和分析系统运行情况。 **开发流程** 1. **初始化项目**:使用Egg.js CLI创建项目,并配置MongoDB...

    nosql 入门教程

    第2章 NoSQL上手初体验 17 2.1 第一印象——两个简单的例子 17 2.1.1 简单的位置偏好数据集 17 2.1.2 存储汽车品牌和型号数据 22 2.2 使用多种语言 30 2.2.1 MongoDB驱动 30 2.2.2 初识Thrift 33 2.3 小结 ...

    电子商务网站建设课程设计报告

    1. 大纲规划:在设计电子商务网站之初,应先拟定一个详细的设计大纲。这包括需求分析、功能模块划分、技术选型、设计流程和时间安排等。需求分析是明确网站需要实现的目标和功能的基础,功能模块划分则是将整体目标...

    绿色的生活服务平台购物商城模板html源码(购物车数字可变,金额不变).zip

    数据库(如MySQL或MongoDB)也是必不可少的,用于存储商品信息、用户数据和订单详情。 此外,考虑到SEO(搜索引擎优化),模板应包含元标签、关键词和描述,以帮助搜索引擎理解和索引网站内容。同时,确保网站的...

    kaixinnongchang.rar_social_农场

    开心农场在设计之初,就面临着如何实现用户之间的实时交互问题。这需要强大的服务器支持,以处理大量并发的请求,确保玩家能在同一时间看到彼此的动作,如种植作物、偷取朋友的果实等。这就涉及到分布式系统设计,...

    带聊天室网络版的五子棋

    此项目旨在提供一个娱乐与社交相结合的平台,虽然功能可能尚未完备,但其核心特性已经初具雏形。 【描述】:“带有聊天功能的五子棋”意味着这款游戏不仅实现了基本的五子棋游戏逻辑,还增加了在线聊天室功能。这...

    fullwardrobe_nodejs

    - 引入前端框架(如React或Vue.js)实现单页应用,提升用户体验。 这个项目对于初学者和经验丰富的开发者都是一个很好的学习资源,通过它,你可以深入了解这些技术的结合使用,以及如何构建一个完整的Web应用。同时...

    计算机毕业设计-学生毕业设计-pan

    《计算机毕业设计-学生毕业设计-pan》是一个以Java为主要编程语言的项目,适用于软件开发人员,无论是初入职场还是在校学生,都能从中受益。这个项目不仅提供了丰富的学习材料,而且还是一个理想的实践平台,帮助...

    ThinkPHP3.2.3完全开发手册

    - **MongoDB支持增强**:对于MongoDB的支持更加完善,提供了更多的特性和API,便于开发者进行NoSQL数据库的操作。 - **模型类增强**:模型类新增了许多有用的功能,比如支持复合主键、多表操作等,极大地丰富了数据...

    网上商城需求分析文档汇总

    5. **用户体验(UX)和界面(UI)设计**:分析文档可能会涉及用户界面的布局、色彩、图标、按钮设计等,以及如何通过直观易用的界面提升用户体验。 6. **安全性与隐私保护**:分析中会讨论如何保障用户的个人信息安全,...

Global site tag (gtag.js) - Google Analytics