一.mongodb的基本操作:

  1.查看mongodb当前所有的databases : show dbs

  2.选择数据库(database) : use databaseName(该数据库不存在则会自动创建,但是只存在于mongodb预设的缓存中,如果你不做任何操作,关闭数据库,那么该数据库也就不存在了,如果你往该库中添加了数据,那么该库就被真正的创建了)

  3.查看数据库中的集合(collection) : show collections

  4.获取mongodb中的帮助 : db.help() 里面有很多的实用性的操作,在你不知道mongodb有哪些操作的时候很有帮助

  5.删除数据库 : use databaseName(必须先选择要删除的数据库), db.dropDatabase()

  6.删除指定数据库下面的集合: use databaseName(必须先选择要删除集合的数据库), db.collectionName.drop()

二.mongodb插入文档

  因为我们的mongodb使用javascript做shell的,所以可以说mongodb的客户端编程跟javascript差不多

  往集合中插入的文档,其格式与json基本一样,所以存储在集合中的文档的格式都是bson,bson是一种类json的二进制形式的存储格式,称之为binary json

  往集合中插入新的文档有两种方式,一种是insert(),一种是save()

  区别:

    insert()方法:当插入数据时,已经存在的_id的数据,则mongodb会直接报错,并返回对应的_id

    save()方法:当插入数据时,它会先去循环一遍集合中的所有数据,判断插入的数据的_id是否存在于集合中,如果不存在则会直接插入一条新的文档,如果存在,则会调用mongodb的update()方法,更新_id对应的数据(相当于覆盖该_id的文档内容)

  语法:

    db.collectionName.insert(document)

    db.collectionName.save(document)

  注意:

    1.在插入数据之前,需要注意的是mongodb对于field(字段)的数据类型非常的敏感,比如你插入了一个age字段,内容为30,是一个string类型的,但是你如果用一个整型30去查询,是查不到该数据的,因为数据类型不对,所以插入数据的时候要慎重,考虑好字段的类型

    2.虽然mongodb灵活性很强,不像关系型数据库那样,建立一个新的字段,所有的数据都有该字段,但是在实际开发中,本人还是建议你插入数据尽量保持每一个集合的字段都相同,这样方便你在程序中的开发

  1.插入文档方法之insert()

    

    

    从上图可以看出,当你插入一条数据成功后,会返回写入的结果,插入成功,插入1条[ WriteResult({ "nInserted" : 1 }) ],而且你会发现,每条数据前面出现了一个"_id"的,它跟我们使用的关系型数据库不太一样,我们使用的关系型数据库一般primary key都是id,而且是自增的(1,2,3,4.....),而它这个是mongodb内为每条文档生成的一个唯一的标识,也具有唯一性,但是不会像关系型数据库那样自增而已,当然我们也可以插入指定的"_id"(等下说save()的时候再实践)

    a.当我们插入一条数据,这个"_id"已经存在了,会发生什么呢?

      

    b.当然insert()方法也可以插入_id(自定义_id的值,而不使用mongodb生成的_id),指定它的值跟我们关系型数据库一样(1,2,3,4,5,6....)

         

    c. mongodb能不能跟关系型数据库一样批量插入呢?关系型数据库批量插入:insert into tablename(columns)values(text1),(text2),(text3).........,而我们的mongodb是不能批量插入的,只能通过循环来实现批量插入

      

    d.在mongodb中每个document的字段field可以不相同(mongodb的灵活性,但是不建议这么做)

      

  2.插入文档方法之save():

    与insert()方法差不多都是插入文档,唯一的不同就是如果_id存在,save()则会更新这条_id对应的数据,而insert则是直接报错,并返回该_id

    

    也可以批量更新,同时不存在的则插入,存在的则更新(下图_id只有1,2,3,通过循环更新了1,2,3,同时也添加了_id为4,5的两条数据):

    

  通过上面的示例,我们可以发现:

  1.mongodb不需要事先定义collection,在第一次插入数据时,它会自动创建collection

  2.在collection中每添加一条document,除非我们自己指定_id,否则,系统都会生成一个唯一的标识ObjectId

  3.在collection中,每个document可以有不同的field(字段)

三、关于mongodb能不能和关系型数据库那样插入成功后返回插入数据的id

   本人在写php操作mongodb的类的时候,遇到了需要返回id的问题,下面是MongoDB mode的代码:

public function insertDocument($collection,$data=array(),$is_set=false){
if(!$collection || empty($data) || !is_array($data)){
die('collection and data can not be empty!');
}
$this->collection = $this->MongoDB->{$collection};
try{
if($is_set){
//批量
$i=0;
$count = count($data);
while($i<$count){
$result[] = $this->collection->insert($data[$i],array('safe'=>true));
$i++;
}
}else{
//单条向集合中安全的插入数据,返回插入状态
$result = $this->collection->insert($data,array('safe'=>true));
}
}catch(MongoCursorException $e){
$this->error = $e->getMessage();
return false; } return array($result,$data);
}

  下面是我插入的数据:

  $arr = array('name'=>'Nginx4','age'=>121,'add_time'=>'2014-03-02');

  接下来是我插入成功后返回的信息截图:

  

  下面我进入cmd,查询返回的_id对应的数据,看看是否存在该数据,并且数据是否正确(数据一致):

  

  对比一下插入的数据,和返回的数据,你会发现插入的数据的数组中多了一个_id,mongodb在添加新的文档之前会把_id生成好,拼接到数组中,然后插入到集合中,所以我们只需要返回你要插入的数据的数组就可以得到该数据插入到集合后的_id了

  如有错误的地方,欢迎批评指正,本人新手,初学!!!!!!

mongodb的基本操作与插入文档(document)的更多相关文章

  1. Mongodb(3)插入文档,更新文档,删除文档

    insert() 方法 要插入数据到 MongoDB 集合,需要使用 MongoDB 的  insert() 或 save() 方法. 插入文档:db.COLLECTION_NAME.insert(d ...

  2. Mongodb的基本操作-数据库 集合 文档的增删改查

    数据库操作: //查看有哪些数据库 > show dbs local  0.078GB mydb   0.078GB //use操作将切换到一个数据库 如果数据库存在将直接切换 如果不存在 那么 ...

  3. MongoDB 插入文档

    文档的数据结构和JSON基本一样. 所有存储在集合中的数据都是BSON格式. BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON. 插入文档 MongoDB 使用 inse ...

  4. MongoDB 教程(七):插入文档、更新文档、删除文档

    MongoDB 插入文档 文档的数据结构和JSON基本一样. 所有存储在集合中的数据都是BSON格式 —— BSON是一种类json的二进制形式的存储格式,简称Binary JSON. MongoDB ...

  5. MongoDB插入文档

    db.collection.insertOne() 插入单个文档.db.collection.insertMany() 插入多个文档.db.collection.insert() 插入单/多个文档.  ...

  6. MongoDB快速入门(四)- 插入文档

    插入文档 将数据插入到MongoDB集合,需要使用MongoDB 的 insert() 方法. 语法 insert()命令的基本语法如下: >db.COLLECTION_NAME.insert( ...

  7. 【Mongodb教程 第六课 】MongoDB 插入文档

    insert() 方法 要插入数据到 MongoDB 集合,需要使用 MongoDB 的  insert() 或 save() 方法. 语法 insert() 命令的基本语法如下: >db.CO ...

  8. MongoDB(四):数据类型、插入文档、查询文档

    1. 数据类型 MongoDB支持许多数据类型. 字符串 - 这是用于存储数据的最常用的数据类型.MongoDB中的字符串必须为UTF-8. 整型 - 此类型用于存储数值. 整数可以是32位或64位, ...

  9. Python MongoDB 插入文档

    章节 Python MySQL 入门 Python MySQL 创建数据库 Python MySQL 创建表 Python MySQL 插入表 Python MySQL Select Python M ...

随机推荐

  1. 使用AndroidStudio自动生成JavaDoc文档

    选中所需要生成的Module,找到工具栏上的 Tools,选择 Generate JavaDoc 出现如图的窗口 选择输出路径,就自动生成. 如果出现编码错误提示,则在 Other command l ...

  2. 撑起大规模PHP网站的开源工具

    撑起大规模PHP网站的开源工具 百万级PHP站点Poppen.de的架构 在 2011年11月27日 那天写的     已经有 3957 次阅读了 感谢 参考或原文   服务器君一共花费了54.510 ...

  3. 【IOS笔记】Creating Custom Content View Controllers

    Creating Custom Content View Controllers 自定义内容视图控制器 Custom content view controllers are the heart of ...

  4. w-WAITING---

    <p id="w_last" style="color: red; font-size: 6em;">w-WAITING---</p>& ...

  5. Lazarus -Pascal常量

    2.常量 2.1.普通常量 仅仅下面类型可以被定义为常量Ordinal类型Set类型指针类型 (but the only allowed value is Nil). real类型 Char, Str ...

  6. SQLServer2008:助您轻松编写T-SQL存储过程(原创)【转】

      本文主要介绍 SQLServerExpress2008不用第三方工具调试T-SQL语句,经过本文的介绍,用SQLSERVER2008 Manage studio 编写.调试T-SQL存储过程都将是 ...

  7. SQL backup&restore

    --完整备份Backup Database NorthwindCSTo disk='G:\Backup\NorthwindCS_Full_20070908.bak' --差异备份Backup Data ...

  8. 原因是未找到“sgen.exe”,或未安装 .NET Framework SDK v2.0

    visual studio编译出现错误:错误 2 任务失败,原因是未找到“sgen.exe”,或未安装 .NET Framework SDK v2.0.该任务正在注册表项 HKEY_LOCAL_MAC ...

  9. zepto源码--filtered, contains,funcArg,setAttribute,className,deserializeVale--学习笔记

    几个方法 1.filtered 目标是对节点按照一定的选择器进行过滤. 如果传入了过滤选择器,则在nodes节点下,选择符合选择器的节点: 如果没有传入选择器,则返回节点本身,转化为zepto节点. ...

  10. PHP实现QQ第三方登录

    PHP实现QQ第三方登录 学习之前,请大家先看一下oAuth协议. 首先呢,我们进入QQ互联的官方网站 http://connect.qq.com登入我们自己的QQ号,没有QQ号的小伙伴可以忽略本篇博 ...