写在前面上一篇中对mongoDB在windows上的安装大致了解并掌握(见 http://www.linuxidc.com/Linux/2012-01/51274.htm ),这一篇对mongoDB进行一个大致的初略了解。没有涉及到PHP语言,只是纯粹的MongoDB自己的语法。PHP对应的MongoDB等熟悉原生态语言之后,再了解。
1.启动:
安装好了mongoDB之后,并将其加入自动随开机启动后,就可以对MongoDB进行测试并学习了。打开客户端。开始>>运行>>cmd。切换到MongoDB的安装目录,运行mongo.exe,默认是运行在27017端口,然后是MongoDB/data 下进行数据存储。
[html] - C:Documents and SettingsAdministrator>E:
- E:>CD MongoDB
- E:MongoDB>mongo.exe
- MongoDB shell version: 2.0.2
- connecting to: test
- >
这样就运行了mongodb,就可以在这个客户端下输入语法结构,来进行试验和学习了。 2.关于MongoDB的几个概念在学习之前我们就知道MongoDB是NoSql数据库,也就是非关系型数据库,那不存在SQL,也就没有表、行和列了。那它是如何存储呢?是文档存储。那么文档就有几个概念了。
文档>>
集合>>
数据库一. 文档是
MongoDB中最小单位,也是MongoDB的核心,相当于MySQL数据库表中的一条记录(一行),多个键以及其关联的值有序的放置在一起就是一个文档,所以,文档是采用键值对的形式存放的,采用json格式{ “var1”:"value1","var2":"value2",......} 。下面就是一个文档:
[javascript] - {"name":"yangyi"}
文档可以是一个键值对,也可以是N个键值对:
[javascript] - {"name" : "yangyi", " sex": "男" , "age":" 保密", "high" : "182"}
文档采用json键值对的形式进行存放。但是是有顺序的,顺序不一样,文档就不一样。 [javascript] - {"name" : "yangyi" , "sex" : "男"} //文档1
- {"sex": "男" , "name" : "yangyi"} //文档2
- 文档1和文档2顺序不一样,所代表的文档就不一样。
文档的键是非空的字符串,区分大小写的。“FOO”和“foo”不一样的,值可以是各种字符,如整型,字符串型,浮点型等等。二. 集合就是一组文档,如果说文档类似于Mysql等关系型数据库中的一行(记录),那么集合就相当于关系型数据库中的表了、
集合是无序的,可以存储任意类型(整型,字符型)的文档,集合的命名是非空的字符串,不能包含“$”,不能用"system"开头。
三. 数据库 多个文档组成集合,多个集合就组成了数据库。一个MongoDB实例可以承载多个数据库,他们之间可视为完全独立,每个数据库都有独立的权限控制,那么数据库的命名:
- 不能是空字符串(“”)
- 不能够含有’‘(空格)、. (点) 、$ 、/ 、 和 (空字符)
- 应全部小写
- 最多64个字节
- admin、local、config都是系统的保留名字,不能作为数据库名。
3.MongoDB的shell
提到shell,,或许并不陌生,这让我想到了linux系统里的shell,就是一组命令编程,通过代码命令,直接在命令提示符下运行,那么在MongoDB中也有shell,它是基于javascript的shell脚本,顾名思义,是可以运行javascript代码的,可以对MongoDB进行系统的管理,检查运行实例,亦或做其他尝试,所以,单纯讲MongoDB,而不与PHP进行连接的话,shell是核心,至关重要。因为对MongoDB数据库的操作都是shell命令。既然MongoDB是基于javascript的shell脚本的,我们来看看几个javascript代码的运行。
[javascript] - Microsoft Windows XP [版本 5.1.2600]
- (C) 版权所有 1985-2001 Microsoft Corp.
-
- C:Documents and SettingsAdministrator>E:
-
- E:>CD MongoDB
-
- E:MongoDB>mongo.exe
- MongoDB shell version: 2.0.2
- connecting to: test
- > x = 100
- 100
- > x /10
- 10
- >
输入x = 200 ,那么x/10 就会计算出结果为10了。下面看一看javascript里面的函数。
[javascript] - E:MongoDB>mongo.exe
- MongoDB shell version: 2.0.2
- connecting to: test
-
- > Math.Random();Tue Jan 10 09:20:42 TypeError: Math.Random is not a function (shell):1 //代码会错误提示不是一个函数
- > Math.PI; //javascript里面的PI函数
- 3.141592653589793
- > Math.random();//javascript里面的随机函数
- 0.16819060474183345
- > Math.random();0.8884451417534981
- >
那么,也可以自定义函数,进行操作,和javascript里面一样。
[javascript] - E:MongoDB>mongo.exe
- MongoDB shell version: 2.0.2
- connecting to: test
- > function fun1 (n) {
- ... if (n <= 1) return 1;
- ... return n * fun1(n-1);
- ... }
- > fun1(5);
- 120
- >
自定义函数fun1(),用来不断判断循环,最终计算出结果120。
所以,在MongoDB中对javascript有着非常好的支持。4.MongoDB的shell对数据库的基本操作 既然MongoDB中的shell脚本如此强大,那么就像是MySQL在命令提示符下,也可以进行对数据库的增删改查操作,MongoDB也不例外。1 . 创建在MongoDB中插入一个文档到集合中,也就是插入一行记录到表中是一样的道理。首先是选择数据库,在选择一个集合,最后将一个文档插入。
[javascript] - E:MongoDB>mongo.exe
- MongoDB shell version: 2.0.2
- connecting to: test
- > use php //use 库名 ,use用来选择数据库,如果这个php数据库不存在,就创建一个名为php的数据库。
- switched to db php //提示信息
- > post = { //编写一个名为post的文档。
- ... "title":"wowowowo",
- ... "content":"hahahahah",
- ... "time": new Date()}
- {
- "title" : "wowowowo",
- "content" : "hahahahah",
- "time" : ISODate("2012-01-10T03:38:45.515Z")
- }
- >db.blog.insert(post); //像php库中的blog集合中插入post文档。如果blog集合不存在,就自动创建一个新的集合,并将post文档加入到这个集合中去。
或许有点不好理解,特别是选择了php数据库后,貌似没有选择集合(mysql中的表),就直接插入了。 在MongoDB中,use database 来选择数据库,当不存在时,就自动创建一个数据库。 db.blog.insert( 文档);来插入一个文档,当然也可以直接插进去,不用post这种形式。 db.blog.find();查找集合里面的全部文档数据; db.blog.find0ne();查找最近的一个文档。 db.blog.update({条件},内容);更新文档。
db.blog.remove();删除文档。所以很重要的思想是:先use(选择)库,在选择集合进行的操作,选择集合和对应的操作是一起的。
[javascript] - E:MongoDB>mongo.exe
- MongoDB shell version: 2.0.2
- connecting to: test
- > use php //第一步:选择php数据库
- switched to db php
- > post = { //第二步:建一个post文档
- ... "title":"wowowowo",
- ... "content":"hahahahah",
- ... "time": new Date()}
- {
- "title" : "wowowowo",
- "content" : "hahahahah",
- "time" : ISODate("2012-01-10T03:38:45.515Z")
- }
- > db.blog.insert(post); //第三步:选择blog集合(没有就在php库中创建),第四步:插入post文档
- > db.blog.find(); //第五步:查询所有的文档记录
- { "_id" : ObjectId("4f0ba2c1b4787b891f51fb9b"), "title" : "yangyi123", "content"
- : "hahahahahah", "time" : "2011-12-23" }
- { "_id" : ObjectId("4f0bb3375a5904bae2b767a6"), "title" : "wowowowo", "content"
- : "hahahahah", "time" : ISODate("2012-01-10T03:38:45.515Z") }
- > db.blog.findOne(); //第六步:查找最近的一个文档,注意:find0ne()中,0是大写字母。
- {
- "_id" : ObjectId("4f0ba2c1b4787b891f51fb9b"),
- "title" : "yangyi123",
- "content" : "hahahahahah",
- "time" : "2011-12-23"
- }
- > db.blog.find({"title":"yangyi123"}) //第七步:查询,键title为"yangyi123"的文档。
- { "_id" : ObjectId("4f0ba2c1b4787b891f51fb9b"), "title" : "yangyi123", "content"
- : "hahahahahah", "time" : "2011-12-23" }
-
- > post.comments = "hao a hao a "; //post文档添加一个comments键,值为“hao a hao a ”
- hao a hao a
- > db.blog.update({"title":"wowowowo"},post) //第八步:更新,将title为“wowowo”的文档添加comments键。
-
- > db.blog.find(); //再重新查看,增加了comments键。
- { "_id" : ObjectId("4f0bc1245a5904bae2b767a8"), "title" : "wowowowo", "content"
- : "hahahahah", "time" : ISODate("2012-01-10T03:38:45.515Z") }
- { "_id" : ObjectId("4f0bc11d5a5904bae2b767a7"), "title" : "wowowowo", "content"
- : "hahahahah", "time" : ISODate("2012-01-10T03:38:45.515Z"), "comments" : "hao a
- hao a " }
- >
- > db.blog.remove({"title":"yangyi123"}) //第九步:删除键title为"yangyi123"的文档。
- > db.blog.remove() //第十步:删除所有的文档
- > db.blog.findOne()
- null
- >
初识MongoDBMangoDB创建、更新、删除文档相关资讯 MongoDB
- MongoDB 3.3.0 发布下载 (01月14日)
- 使用MongoDB C#官方驱动操作 (12/31/2015 16:27:56)
- CentOS 6.6下安装MongoDB 3.0.1 (12/21/2015 19:29:02)
| - MongoDB 3.2版WiredTiger存储引擎 (01月02日)
- 进程监控工具Supervisor 启动 (12/26/2015 10:49:57)
- MongoDB 3.2.1 RC0 发布下载 (12/18/2015 11:32:29)
|
本文评论 查看全部评论 (0)