1,mongodb中的文档(document)
.文档是mongodb的核心概念,多个键及其关联的值有序的放置在一起就是文档。例如:
文档1:
{"name1": "test", "age": 80, "address": "bj"}
文档2:
{"name1": "test", "address": "bj", "age": 80}
.文档的键/值对是有序的,文档1和文档2的是两个不同的文档
.从例子中可以看出,文档中键的值的类型可以不同,这个想python中的字典
.文档中的键的要求
(1)文档中的键必须是字符串,除了少数例外情况,键值可以使用任意的UTF-8字符
(2)键中不能含有\0和.还有$和_这些字符
(3)键的字符串,区分大小写
(4)键不能重复
2,集合
.集合是一组文档的组合,可以把文档看成关系数据库中的行,把集合看成是表。
.集合是无模式的,也就是说集合中可以有各式各样的文档:
{“name1”: "test"}
{"age": 80}
.在一个集合中放置各种各样的文档,会造成很多查询浪费,而且分析起来也不方便。
.最好是把同种类型的文档放在一个集合中,方便创建索引,和其他的管理操作;
.集合的命名
.集合的命名中不能是空字符串,不能含有\0,不能以system.开头,不能含有$字符;
.子集合可和可以通过,集合.子集合 这样的方式来引用;
.一个集合可以包含多个子集合;
3, 数据库
.多个文档组成集合,多个集合组成数据库;
.数据库也可以通过名字来标记:但必须满足以下条件,数据库名最终会变成系统中的文件
(1)不能空字符串,不得含有‘’.$\/和\0等字符
(2)应该全部小写
(3)最多64字节
.有些数据库是保留的,包括:
admin, local, config
4,启动和使用mongoDB
.安装好mongodb后,默认的数据目录是/data/db,该目录可以通过--dbpath参数来指定,默认端口是27017
../mongod 来启动数据库
. mongoDB shell
. 启动mongoDB shell
./mongo
. mongoDB是用javascript写的,所以可以使用javascript的函数
.shell中的基本操作
>use foobar
>db
(1)创建
定义一个对象:
>post={"title":"hello world", "data": new Date()}
插入对象:
>db.blog.insert(post)
查看一下:
>db.blog.find()
(2)读取
find()会返回集合里所有的文档,findOne()方法会返回想查看的一个文档
(3)删除
>db.blog.remove({"title":"hello world"})
(4)更新
> post = {"name" : "testmongo", "age": 20}
{ "name" : "testmongo", "age" : 20 }
> db.blog.insert(post)
> db.blog.find()
{ "_id" : ObjectId("4f6e7a0e1dffe42de82704f8"), "name" : "testmongo", "age" : 20 }
> post.age=80
80
> db.blog.update({"name":"testmongo"}, post)
> db.blog.find()
{ "_id" : ObjectId("4f6e7a0e1dffe42de82704f8"), "name" : "testmongo", "age" : 80 }
5 数据类型
5.1 基本数据类型
mongodb的支持的数据类型和mongodb shell支持的数据类型不同,mongodb shell支持的数据类型要少一些。
.null
表示空值或是不存在的字段
{"data": null}
.布尔
布尔值有两个: true 和 false
.32位整形
此类型在shell中不可用。
.64位整形
shell不支持.
.64位浮点数
shell中支持这种类型,而不支持整数类型,所以:
{"x": 3.14}是浮点型
{"x": 3} 保存后也会转换成浮点型
.字符串
{"str": "hello"}
.符号
shell中不支持符号类型,它会把数据库中的符号转换成字符串
.对象id
对象id是文档的12直接的唯一ID
.正则表达式
文档中可以包含正则表达式
{"x": /foobar/i}
.代码
文档中可以包含javascript代码
{"x": function()}
.二进制数
二进制数可以由任意的字节组成,但shell中不支持。
.最大值和最小值
shell中不支持
.未定义
.数组
值的集合或者列表可以表示成数组
{"x": ["a", "b", "c"]}
.内嵌文档
文档中可以包含文档
{"x": {"boo": "bar"}}
5.2 关于数据类型的说明
. 关于数字
待续......
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20498361/viewspace-719454/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/20498361/viewspace-719454/