您好,欢迎访问一九零五行业门户网

NoSQL学习之路(四):创建、读

本文地址: 欢迎转载 ,请保留此链接 ! 本文介绍数据库的4个基本操作:创建、读
本文地址:  欢迎转载 ,请保留此链接• •!
本文介绍数据库的4个基本操作:创建、读取、更新和删除(crud)。
mongodb没有类似sqlserver 的manager studio、mysql的workbench等工具。接下来的数据库操作演示,我们只能使用mongodb自带简洁但功能强大的javascript shell,mongodb shell是一个独立的db客户端(它也是功能完备的javascript解释器 可以运行任何javascript程序),mongodb shell的使用介绍请阅读博文《nosql学习之路(三):mongodb shell的使用》。
crud1.c 创建insert函数添加一个文档到集合里面。
直接将文档作为参数:
>db.post.insert({title:ex.1})
或者将文档赋值给变量,变量作为方法的参数。
下面我们添加一篇文章。首先,创建一个局部变量post,javascript对象作为文档的内容的赋值给post。里面会有title,author,content和date等键值。
使用count()查询集合中文档条数:
当我们成功的插入一条文档到集合中后,我们会发现多了一个键_id和自动生成的objectid类型值。[详情:]
当插入多个文档到一个集合的时候,请使用批量插入会快一些。批量插入能传递一个由文档构成的数组给数据库。这样避免了许多零碎的请求所带来的开销。
要是只是导入原始数据(例如,从mysql中导入 ),可以使用命令行工具,如mongoimport,而不是使用批量插入。另一方面,可以用它在存入mongodb之前对数据做一些小的修整(转换日期成为日期类型,或添加自定义的_id所以批量插入对导入数据来说也是有用的。
当执行插入的时候,使用的驱动程序会将数据转换成bson的形式,然后将其送入数据库。数据库解析bson,检验是否包含_id键并且文档不超过4mb。要查看doc文档转为bson的大小(以字节为单位),在shell中运行 object.bsonsize(doc)即可。
mongodb在插入时并不执行代码,不做别的数据验证,就只是简单地将文档原样存入数据库中.虽然会导致插入无效的数据,但是它能让数据库更加安全,远离注入式攻击。
2.r读取find会返回集合里面所有的文档。findone(注意大小写 findone 是无效的)查看一个文档。
find和findone可以接受査询文档形式的限定条件。这将通过査询限制匹配的文档。使用find时,shell自动显示最多20个匹配的文档,但可以获取更多文档。
3.u更新更新操作是原子的:若是两个更新同时发生,先到达服务器的先执行,接着执行另外的。
update接受(至少)两个参数:第一个是要更新文档的限定条件,网站空间,第二个是新的文档。
注意:若是集合中有多个文档匹配查询条件,更新时会查询条件匹配了,然后更新的时候由于第二个参数的存在就产生重复的_id值,数据库会报错。限定条件尽量只能筛选出一条文档记录来。
假设决定给我们先前写的文章增加标签,则需要增加一个新的键,对应的值是存放标签的数组。
第一步修改变量post,增加tags键:
shell输入post回车,post变量中文档值已经包含了tags数组了。
使用update方法更新文档后,香港空间,文档中便有了tags键的内容。
4.d删除remove用来从数据库中永久性地删除文档,不能回复和撤销。
在不使用参数进行调用的情况下,它会删除一个集合内的所有文档,不会删除集合本身,原有的索引也会保留。。
>db.posts.remove()
它也可以接受一个文档以指定限定条件作为参数。
集合现在又是空的了。如果要清除整个集合,直接删除集合(然后重建索引)会更快,使用drop_collection函数。
>>db.drop_collection(collection_name)
 objectld    官方wiki:
当我们成功的插入一条文档到集合中后,我们会发现多了一个键_id和自动生成的objectid类型值。通常会在客户端由驱动程序完成。原因如下:
mongodb的设计理念:能从服务器端转移到驱动程序来做的事,就尽量转移。扩展应用层也要比扩展数据库层容易得多。将事务交由客户端来处理,就减轻了数据库扩展的负担。在客户端生成objectld,驱动程序能够提供更加丰富的api。集合中每个文档都有唯一的_id值,来确保集合里面每个文档都能被唯一标识。objectld是_id的默认类型,它是一种轻量型的,不同的机器都能用全局唯一的同种方法轻量的生成它。mongodb从开始设计就被定义为分布式数据库,处理多个节点是一个核心要求。若采用传统的自增主键策略,在多台服务器上同步自动增加主键既费力又费时。
01234567891011
时间戳机器名pid计数器
objectid占用12字节的存储空间,每个字节两位十六进制数字,是一个24位的字符串。由“时间戳” 、“机器名”、“pid号”和“计数器”组成。使用机器名的好处是在分布式环境中能够避免单点计数的性能瓶颈。使用pid号的好处是支持同一机器内运行多个mongod实例。最终采用时间戳和计数器的组合来保证唯一性。
1.时间戳4个字节。从标准纪元开始,单位为秒。
2.机器名3个字节。所在主机的唯一标识符。通常是机器主机名的散列值,机器名通过md5加密后取前三个字节。
其它类似信息

推荐信息