`

MongoDB学习总结二

 
阅读更多

MongoDB的一些操作:

创建数据库:

use test

注意此时数据库并没有创建,只是在mongo的预处理缓存中存在,只有为mongo加入相应的list,才真正创建。如果什么都不干就离开的话,这个空数据库就会被删除。

 

show dbs  查看所有的集合

show collections    查看集合中所有的文档

db.help()   查看帮助

db.students.help()   查看集合的帮助

db.system.indexes.find()   查看索引

db.students.drop()   删除文档中的数据

 

插入数据:

db.[documentName].insert()

例如:

db.persons.insert({name:"zhangsan"}),该操作会自动增加一个_id键。

 

save操作和insert操作的区别:

当遇到_id相同的情况,save会保存操作,insert则会报错。

批量插入:

for(var int i=0; i<10; i++){

           db.person.insert({name:i});

    }

每次插入的文档不能超过4M,使用Object.bsonsize(doc)可以查看doc文档转换为bson的大小。

 

删除文档:

db.[documentName].remove()

db.user.remove()    //该操作会删除user集合中的所有文档,但不会删除user集合,原始的索引也将会保留。

根据条件进行删除:

db.persons.remove({_id:1})

如果要删除一个数据量十分庞大的集合,直接删除该集合比直接用remove的效率高很多。

 

更新文档:

更新操作是原子的,若两个更新同时发生,先到达服务器的先执行。

db.[documentName].update({查询器},{修改器})

//主键冲突的时候会报错并停止更新。

insertOrUpdate操作:

db.[documentName].update({查询器},{修改器},true)

批量更新:

db.user.update({name:"zhangsan"},{$set:{name:"lisi"}},false,true)

将name为zhangsan的数据批量更新name为lisi

如果有多个文档符合查询器的条件,妖精这些匹配的文档全部更新,则将update的第四个参数设置为true

执行getLastError命令可以查看到底更新了多少文档:

db.runCommand({getLastError:1})

 

使用修改器来完成局部更新操作:

修改器:

$set:用来指定一个键值对,如果键存在就进行修改,不存在则添加。

db.person.update({"name":"xiaoming"},{$set:{"book":"java"}})

$set修改内嵌文档:

db.person.update({"author.name":"john"},{$set:{"authoe.name":"lily"}})//author为person的内嵌文档

 

$inc:只适用于数字类型,为指定的键对应的数字类型的值进行加减操作。

$uset:删除指定的键

db.person.update({"name":"xiaoming"},{$set:{"book":1}})

 

数组修改器:

$push:

(1)如果指定的键是数组,则追加的数值

(2)如果指定的键不是数组,则中断当前操作。

(3)如果指定的键是数组但是指定的键不存在,则创建数组类型的键值对

db.user.update({"name":"zhangsan"},{$push:{"books":{"java":"java7","nosql":"mongodb"}}})

 

$pushAll:可以批量添加数组,用法同$push

 

$ne:判断键所指定的值是否等于$ne的值

db.user.update({"name":{"$ne":"lucy"}},{$push:{"books":{"java":"java7","nosql":"mongodb"}}})

 

$addToSet:目标数组存在此项则不错操作,不存在则加进去

$addToSet和$each结合起来添加多个不同的值:

db.user.update({"_id":"123"},{"$addToSet":{"emails":{"$each":["13@qq.com","1333@163.com"]}}})

$each会循环遍历后面的数组,把每一个数值进行addToSet操作

 

$pop:从指定数组删除一个值,1表示删除最后一个数值,-1表示删除第一个数值。(这相当于把数组看成是队列或者栈)

{$pop:{"key":1}}//从末尾删除一个元素

{$pop:{"key":-1}}//从头部删除一个元素

 

$pull:删除一个被指定的数值

db.user.update({"_id":"1234"},{$pull:{"name":"john"}})

$pullAll:一次性删除多个指定的值

 

数组定位修改器

$ :数组定位器,如果数组有多个数值,我们只想对其中的一部分进行操作,$用来定位查询文档已经匹配的元素。

db.blog.update({"comments":"john"},{"$set":{"comments.$.author":"jim"}})

 

注意:当doucument被创建时,DB会为其分配内存和预留内存,当修改操作不超过预留内存时,修改的速度是很快的,但是当超过了预留内存时就要重新分配预留内存,则会消耗时间。所以,在进行push等操作时一定要注意,push的内容不要过多,如果push成为了瓶颈,可以将内嵌数组独立出来放到一个单独的集合中。

 

upsert操作

如果没有文档符合更新条件,就以这个条件和更新文档为基础创建一个文档;如果找到了匹配条件的文档,则正常更新。

db.persons.update({"count":25},{$inc:{"count":3}},true)

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    MONGODB学习总结入门篇.pdf

    MongoDB学习总结入门篇.pdf MongoDB是一个基于分布式文件存储的数据库,旨在为WEB应用提供可扩展的高性能数据存储解决方案。下面将对MongoDB的基本概念、特点、使用原理和基本操作进行详细介绍。 1. MongoDB基本...

    MongoDB学习总结笔记

    以下是对MongoDB学习的一些关键知识点的详细解释: 1. **MongoDB的基本概念**:MongoDB以集合(Collections)的形式存储数据,集合相当于关系型数据库中的表。集合内包含文档(Documents),文档是JSON格式的数据...

    mongodb学习总结.docx

    2. **动态查询**:MongoDB支持动态查询,可以方便地查询各种数据结构。 3. **丰富数据类型支持**:包括日期、正则表达式、代码和二进制数据等。 4. **索引支持**:可以创建索引来加速查询。 5. **服务器端JavaScript...

    Morphia和MongoDB学习总结<三>

    **标题:“Morphia和MongoDB学习总结&lt;三&gt;”** 在本文中,我们将深入探讨Morphia,一个用于Java的MongoDB对象数据映射(ODM)库,以及它如何与MongoDB数据库进行交互。Morphia简化了在MongoDB中存储和检索Java对象的...

    mongodb总结

    MongoDB 使用BSON(Binary JSON)格式存储数据,这是一种类似JSON的二进制表示,支持更丰富的数据类型,如日期、整数、双精度浮点数和二进制数据。文档是MongoDB中的基本数据单元,类似于JSON对象。 2. 集合与...

    mongodb学习笔记和mongodb权威指南

    最后,`mongodb总结`可能是作者对MongoDB学习过程中的关键点、难点和实践经验的提炼。这可能包括一些常见问题的解决方案,最佳实践的汇总,以及在实际项目中应用MongoDB的经验分享。 总的来说,这些资源将帮助学习...

    mongodb数据库的学习与总结

    2. MongoDB主要特点: - NoSQL:非关系型数据库,不依赖于固定的表结构,更适合处理结构变化大的数据。 - JSON格式:支持JSON-like文档存储,方便数据交换和处理。 - 高性能:内存映射文件系统和高效的BSON数据...

    MongoDB学习总结

    关于MongoDB安装、部署、命令操作、PHP插件操作、复制集、分布式、Sharding框架。

    mongodb学习手册.pdf

    ### MongoDB学习手册知识点总结 #### 一、MongoDB简介 - **名称来源**:MongoDB的名称来源于英文单词“humongous”,意指巨大的。这个名字反映了MongoDB处理大规模数据的能力。 - **发展历史**:MongoDB自2010年...

    mongoDB学习 命令 安装

    MongoDB 是一种流行的开源、高性能、无模式的文档型数据库,设计用于处理和存储大量数据。...通过其直观的命令行接口和强大的查询语言,MongoDB 提供了一个易于学习和使用的环境,使得开发者可以轻松地管理和操作数据。

    MongoDB总结,文件为md 格式 可以利用Typora打开文件

    通过阅读这份"MongoDB总结"文件,学习者将能够掌握MongoDB的基本概念、操作以及在实际项目中的应用,为进一步学习和使用MongoDB打下坚实基础。利用Markdown格式,内容易于阅读和理解,结合Typora等编辑器,学习体验...

    MongoDB学习笔记思维导图

    总结的MongoDB的学习笔记,基本上包括了MongoDB的方方面面,每个知识点,都有示例代码,有需要的朋友,可以下载下来进一步补充完善。

    mongodb 学习文档

    总结,MongoDB以其独特的文档存储方式、强大的查询能力以及优秀的可扩展性成为现代应用的首选数据库之一。对于初学者,理解其核心概念、操作方法和分片机制是迈向MongoDB专家的第一步。通过不断的实践和学习,开发者...

    Mongodb学习资料(Mongodb权威指南+实战班克)

    6. 最佳实践:总结MongoDB在设计、部署和运维中的最佳实践,避免常见的陷阱和误区。 通过这两部分的学习,你不仅可以掌握MongoDB的基本操作,还能了解到如何在实际开发中高效地运用MongoDB,提升项目质量和性能。...

    MongoDB学习分享.pptx

    ### MongoDB学习分享知识点详解 #### 一、NoSQL简介与MongoDB概述 ##### NoSQL概念: - **定义**:NoSQL最初是指“Not Only SQL”,但现在更多地被理解为“Not Only SQL”。这类数据库不再遵循传统的关系型数据库...

    nosql实验六- MongoDB的安装与基本操作.docx

    二、MongoDB 文档操作 ### 插入并保存文档 MongoDB 中文档的插入和保存是通过使用 insert 命令来实现的。例如,以下命令将插入一个新的文档: `db.collection.insertOne({name: "John", age: 30})` ### 删除文档...

    MongoDB学习手册

    以上内容总结了《MongoDB学习手册》的主要知识点,涵盖了MongoDB的基础概念、特性、应用场景、数据类型、索引、主从同步、分片和集群、基本操作、Shell控制台使用方法以及安全与认证等方面,为读者提供了全面的学习...

Global site tag (gtag.js) - Google Analytics