`
banxi1988
  • 浏览: 151948 次
  • 性别: 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数据库, 实现信息的增删改查功能

    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 小结 ...

    microscope:Discover Meteor书籍教程中的应用(作为代码完成)

    流星/ MongoDB find返回一个游标(这是一个React性数据源) 提取将光标转换为数组 注意:但是,Meteor应用程序可以在光标上进行迭代。 因此,当您明确想要数组中的数据时,将使用fetch 错误部分(validatePost) ...

    SpringCloudLearning_forezp.tar.gz

    史上最简单的SpringCloud教程 | 第十四篇: Spring Cloud Gateway初体验 史上最简单的SpringCloud教程 | 第十五篇: Spring Cloud Gateway 之Predict篇 史上最简单的SpringCloud教程 | 第十六篇: Spring Cloud Gateway...

    crails:Web应用程序的C ++ MVC开发的Crails框架

    Crails Framework是一个MVC Web开发框架,旨在为C ++开发人员带来类似Rails的体验。 尽管受到Ruby on Rails的启发,但它却轻巧得多。 它是基于cpp-netlib的HTTP服务器,使用路由系统,MVC设计,C ++编译的模板,...

    ThinkPHP v6.0.7

    内置了高性能的基于标签库和XML标签的编译型模板引擎RESTFul支持-通过REST控制器扩展提供了RESTFul支持,为你打造全新的URL设计和访问体验云平台支持-提供了对新浪SAE平台和百度BAE平台的强力支持,具备“横跨性”和...

    微服务架构和基于容器参考应用程序eShopOnContainers.zip

    这是一个很好的机会,来自社区的拉动请求,例如使用Nancy的新微服务,或者甚至其他语言,如Node,Go,Python或具有MongoDB Azure DocDB兼容性的数据容器,PostgreSQL,RavenDB,Event Store,MySql等。) 数据库...

Global site tag (gtag.js) - Google Analytics