mongodb的写操作

 更新时间:2019年01月22日 14:38:05   作者:chenqiangdage  
今天小编就为大家分享一篇关于mongodb的写操作,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

使用插入数据命令:

>insert

需要注意的是,如果插入一文件(现在理解,nosql 类型的db数据不能说是记录了,它是已文件作为单位,而传统型的关系型数据库,我们说是插入一条记录),如果没有带人_id,那么会自动生成一个唯一的id,这个id好比关系型数据库里的主键一样。

如果是自己指定id,那么必须id是唯一的,这点关系型和nosql型都必须要求的;

数据字段的名字不能包含$ 和.

在敲了一阵发现,擦,我要是再shell里面去编写复杂的插入语句,就shell的这种一行一句,不搞死我去啊。我想它肯定是支持向bat这种批处理或者其他,看它语法和js一模一样,于是大胆猜测它使用的就是javascript,于是我就用notepad++来编辑这些插入命令,试着插入复杂的对象;

哦,另外说一句,如果这个bios数据不存在,那么要先使用

>use bios

生成一个数据库,如果你不往这里插入一笔数据,mongoDB会自动删除掉这个数据库;

所以还要插入一笔让mongodb维持这数据库的任意数据

>db.bios.insert({a:'a'})

编写了一个insert.js脚步,放在安装目录的js文件夹下。于是这样输入:

>mongolocalhost:27017/bios f:\mongodb\js\insert.js

效果如图

可以看到,这个js脚步成功执行;

要查询这个文档,输入命令:

>db.bios.find({ name: { first: 'John', last: 'chen' } } );

有了js写更多的语句,就方便多了。

Isert语句支持多个批量插入就像下面这样:

Insert.js 语句:

db.bios.insert(
  [
   {
    _id: 3,
    name: { first: 'Grace', last: 'Hopper' },
    title: 'Rear Admiral',
    birth: new Date('Dec 09, 1906'),
    death: new Date('Jan 01, 1992'),
    contribs: [ 'UNIVAC', 'compiler', 'FLOW-MATIC', 'COBOL' ],
    awards: [
         {
          award: 'Computer Sciences Man of the Year',
          year: 1969,
          by: 'Data Processing Management Association'
         },
         {
          award: 'Distinguished Fellow',
          year: 1973,
          by: ' British Computer Society'
         },
         {
          award: 'W. W. McDowell Award',
          year: 1976,
          by: 'IEEE Computer Society'
         },
         {
          award: 'National Medal of Technology',
          year: 1991,
          by: 'United States'
         }
        ]
   },
   {
    _id: 4,
    name: { first: 'Kristen', last: 'Nygaard' },
    birth: new Date('Aug 27, 1926'),
    death: new Date('Aug 10, 2002'),
    contribs: [ 'OOP', 'Simula' ],
    awards: [
         {
          award: 'Rosing Prize',
          year: 1999,
          by: 'Norwegian Data Association'
         },
         {
          award: 'Turing Award',
          year: 2001,
          by: 'ACM'
         },
         {
          award: 'IEEE John von Neumann Medal',
          year: 2001,
          by: 'IEEE'
         }
        ]
   },
   {
    _id: 5,
    name: { first: 'Ole-Johan', last: 'Dahl' },
    birth: new Date('Oct 12, 1931'),
    death: new Date('Jun 29, 2002'),
    contribs: [ 'OOP', 'Simula' ],
    awards: [
         {
          award: 'Rosing Prize',
          year: 1999,
          by: 'Norwegian Data Association'
         },
         {
          award: 'Turing Award',
          year: 2001,
          by: 'ACM'
         },
         {
          award: 'IEEE John von Neumann Medal',
          year: 2001,
          by: 'IEEE'
         }
        ]
   }
  ]
);
db.bios.insert(
  {
   name: { first: 'John', last: 'McCarthy' },
   birth: new Date('Sep 04, 1927'),
   death: new Date('Dec 24, 2011'),
   contribs: [ 'Lisp', 'Artificial Intelligence', 'ALGOL' ],
   awards: [
        {
         award: 'Turing Award',
         year: 1971,
         by: 'ACM'
        },
        {
         award: 'Kyoto Prize',
         year: 1988,
         by: 'Inamori Foundation'
        },
        {
         award: 'National Medal of Science',
         year: 1990,
         by: 'National Science Foundation'
        }
       ]
  }
)
c = db.bios.find( { name: { first: 'John', last: 'McCarthy' } } );
while((c.hasNext())) printjson(c.next())

=================================================

Mongo还有个save方法,这个方法同样也是插入数据。咋一样是一样的,仔细想想如果是一样的,那干嘛不统一,于是想到了ORM模式中,数据的save方法中,如果要保存的数据已存在,那么它知道是修改这个数据,如果不存在则是新增。同样,这里save也是如此。

如果save方法带了_id那么,如果数据库中存在了此_id的文档,那么,会修改原有数据,如果没有,则新增,所以,不带_id的save方法和insert是一样的,但是Insert方法如果插入的是相同的Id,那么是不会插入的;

更新操作,传统的数据库更新操作,必须是更新的数据已经存在,要不然你想,你数据记录都不在便要更新,这不扯淡吗,但是,mongodb却可以这样,如果要更新的数据不存在,那么便插入这文档数据;

更新语法:

db.collection.update(<query>,<update>, { upsert: true } )

如果是更新具体某个,那么带_id的save方法同样可以完成更新任务;

查询可发现改变的数据:

>c =db.bios.find( { name: { first: 'update', last: 'update' } } );
>while((c.hasNext()))printjson(c.next())

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • 解决mongo的tickets被耗尽导致卡顿问题

    解决mongo的tickets被耗尽导致卡顿问题

    这篇文章主要介绍了解决mongo的tickets被耗尽导致卡顿问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • MongoDB的主从复制及副本集的replSet配置教程

    MongoDB的主从复制及副本集的replSet配置教程

    MongoDB可以在以一个主节点处理客户端请求的情况下以其他节点服务器负责映射主节点上的数据,即为我们通常所说的主从复制功能,这里我们就来共同总结MongoDB的主从复制及副本集的replSet配置教程:
    2016-07-07
  • MongoDB中文学习入门教程(包括安装配置和增删改查)

    MongoDB中文学习入门教程(包括安装配置和增删改查)

    本文主要介绍了MongoDB的基本知识和操作,MongoDB是一种面向文档的无结构化数据库系统,具有灵活性、可扩展性和高性能等优点,安装和配置MongoDB也非常简单,使用MongoDB的API进行操作也非常方便,在实际使用中,MongoDB可以作为常规数据存储或NoSQL解决方案的替代品
    2024-01-01
  • MongoDB快速入门笔记(三)之MongoDB插入文档操作

    MongoDB快速入门笔记(三)之MongoDB插入文档操作

    这篇文章主要介绍了MongoDB快速入门笔记(三)之MongoDB插入文档操作 的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • MongoDB数据备份迁移的全过程

    MongoDB数据备份迁移的全过程

    这篇文章主要记录了MongoDB数据备份迁移的全过程,文中通过图文结合的方式介绍的非常详细,对大家了解学习MongoDB数据备份迁移有一定的帮助,需要的朋友可以参考下
    2024-06-06
  • mongodb增量/全量备份脚本的实现详解

    mongodb增量/全量备份脚本的实现详解

    这篇文章主要给大家介绍了关于mongodb增量/全量备份脚本的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • mongodb 随机获取一条记录的方法

    mongodb 随机获取一条记录的方法

    这篇文章主要介绍了 mongodb 随机获取一条记录的方法的相关资料,需要的朋友可以参考下
    2016-10-10
  • Mongodb使用索引进行查询优化的操作方法

    Mongodb使用索引进行查询优化的操作方法

    为集合建立合适的索引,能够有效的减少查询操作时扫描数据的数量 ,从而提高查询效率,简化了mongodb内部查询工作,这篇文章主要介绍了Mongodb使用索引进行查询优化的操作方法,需要的朋友可以参考下
    2024-06-06
  • Mongodb使用$pop删除数组中元素的操作指南

    Mongodb使用$pop删除数组中元素的操作指南

    本文描述怎样从Mongodb的文档数组字段中,使用$pop删除数组中的元素,文中通过代码示例给大家讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-06-06
  • MongoDB入门教程之分片技术详解

    MongoDB入门教程之分片技术详解

    这篇文章主要介绍了MongoDB入门教程之分片技术详解,分片是mongodb中的另一种集群技术,需要的朋友可以参考下
    2014-08-08

最新评论