`
baobeituping
  • 浏览: 1067939 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

MongoDB学习笔记(四)

 
阅读更多

现在这节就主要讨论插入,更新和删除文档。

插入:MongoDB学习笔记(一)中有讲 这里就简单复习一下

首先声明MongoDB中保存的是BSON (不是JSON)

db.collection_name.insert()

--------------------------------------------------------------------------------------

 

> data = { name:'hurry',title:'software developer',skills:['java','js']}     

{

"name" : "hurry",

"title" : "software developer",

"skills" : [

"java",

"js"

]

}

> db.members.insert(data);

> db.members.findOne();   

{

"_id" : ObjectId("4e11a4f6c25a7683c014d968"),

"name" : "hurry",

"title" : "software developer",

"skills" : [

"java",

"js"

]

}

--------------------------------------------------------------------------------------

insert和save方法的区别

insert 不校验数据是否存在,直接插入,如果重复的话,报错.

save 插入重复数据,则改用update

---------------------------------------------------------------------------------------

 

> db.members.insert                                                                                                                                                              

function (obj, _allow_dot) {

    if (!obj) {

        throw "no object passed to insert!";

    }

    if (!_allow_dot) {

        this._validateForStorage(obj);

    }

    if (typeof obj._id == "undefined") {

        var tmp = obj;

        obj = {_id:new ObjectId};

        for (var key in tmp) {

            obj[key] = tmp[key];

        }

    }

    this._mongo.insert(this._fullName, obj);

    this._lastID = obj._id;

}

> db.members.save  

function (obj) {

    if (obj == null || typeof obj == "undefined") {

        throw "can't save a null";

    }

    if (typeof obj._id == "undefined") {

        obj._id = new ObjectId;

        return this.insert(obj);

    } else {

        return this.update({_id:obj._id}, obj, true);

    }

}

> db.members.find();   
{ "_id" : ObjectId("4e11a4f6c25a7683c014d968"), "name" : "hurry", "title" : "software developer", "skills" : [ "java", "js" ] }
{ "_id" : ObjectId("4e11adf4c25a7683c014d969"), "name" : "hurry", "title" : "software developer", "skills" : [ "java", "js" ] }
> data._id = ObjectId("4e11a4f6c25a7683c014d968")
ObjectId("4e11a4f6c25a7683c014d968")
> db.members.insert(data)                        
E11000 duplicate key error index: test.members.$_id_  dup key: { : ObjectId('4e11a4f6c25a7683c014d968') }
> db.members.save(data)  

 

---------------------------------------------------------------------------------------

删除:MongoDB学习笔记(一)中有讲 这里就简单复习一下

remove 方法 删除文档  function (t, justOne) 

参数1 条件 参数2 删除一个?boolean

如果要删除所有数据  有一个简单的方法 可以直接删除相应的集合 db.collection_name.drop() 这样的速度会更快


更新:

这里主要讲一下更新方法 MongoDB学习笔记(一)中有讲过最简单的更新 这里就不提了

使用修改器

$inc 增加值 (可以增加负数)只用于数字类型

-------------------------------------------------------------------------------------

 

> db.members.find()      

{ "_id" : ObjectId("4e11b35ec25a7683c014d96a"), "name" : "hurry", "title" : "software developer", "skills" : [ "java", "js" ], "age" : 25 }

> db.members.update({'name':'hurry'},{'$inc':{'age':1}})

> db.members.find()                                     

{ "_id" : ObjectId("4e11b35ec25a7683c014d96a"), "name" : "hurry", "title" : "software developer", "skills" : [ "java", "js" ],"age" : 26 }

 

-------------------------------------------------------------------------------------

$set 如果该键不存在,则增加它(使用$unset删除不想要的键)

-------------------------------------------------------------------------------------

 

> db.members.update({'name':'hurry'},{'$set':{'age':22}})

> db.members.find()                                      

{ "_id" : ObjectId("4e11b35ec25a7683c014d96a"), "name" : "hurry", "title" : "software developer", "skills" : [ "java", "js" ], "age" : 22}

 

-------------------------------------------------------------------------------------

数组修改器 $push $pop

-------------------------------------------------------------------------------------

 

> db.members.find()                                        

{ "_id" : ObjectId("4e11b35ec25a7683c014d96a"), "age" : 22, "name" : "hurry", "skills" : [ "java", "js" ], "title" : "software developer" }

> db.members.update({'name':'hurry'},{'$push':{'skills':'python'}})

> db.members.find()                                                

{ "_id" : ObjectId("4e11b35ec25a7683c014d96a"), "age" : 22, "name" : "hurry", "skills" : [ "java", "js", "python" ], "title" : "software developer" }

> db.members.update({'name':'hurry'},{'$pop':{'skills':1}})        

> db.members.find()                                        

{ "_id" : ObjectId("4e11b35ec25a7683c014d96a"), "age" : 22, "name" : "hurry", "skills" : [ "java", "js" ], "title" : "software developer" }

 

-------------------------------------------------------------------------------------

$addToSet 避免重复插入

-------------------------------------------------------------------------------------

 

> db.members.update({'name':'hurry'},{'$addToSet':{'skills':'python'}})

> db.members.find()                                                    

{ "_id" : ObjectId("4e11b35ec25a7683c014d96a"), "age" : 22, "name" : "hurry", "skills" : [ "java", "js", "python" ], "title" : "software developer" }

 

-------------------------------------------------------------------------------------

$each一次添加多个

--------------------------------------------------------------------------------------

 

> db.members.update({'name':'hurry'},{'$addToSet':{'skills':{$each:['python','mongoDB','PL/SQL']}}})

> db.members.find()                                                                                 

{ "_id" : ObjectId("4e11b35ec25a7683c014d96a"), "age" : 22, "name" : "hurry", "skills" : [ "java", "js", "python", "PL/SQL", "mongoDB" ], "title" : "software developer" }

----------------------------------------------------------------------------------------


 

更新多个文档(熟悉update方法的用法) 参见MongoDB学习笔记(一)中的参考资料

分享到:
评论

相关推荐

    mongodb学习笔记资料

    mongodb学习笔记资料,从安装到操作库collection 对document的crud 索引 replicaSet sharding 备份与恢复

    MongoDB学习笔记

    自己在学习MongoDB的一些笔记,里面有各个查询选择器的使用截图,还有一些索引的介绍。

    Mongodb学习笔记.docx

    MongoDB 学习笔记 本文档是 MongoDB 学习笔记,涵盖了 NoSQL、Cache、运行平台等多个方面的知识点。 一、NoSQL 数据库 MongoDB MongoDB 是一个强大、灵活、可扩展性好的文档数据存储器,可以完成大部分关系数据库...

    MongoDB学习笔记思维导图.pdf

    本篇学习笔记将从基础操作到高级功能,详细阐述MongoDB的关键知识点。 首先,MongoDB的基本单元是集合(collection),类似于关系型数据库中的表,而集合中的元素称为文档(document),文档是键值对的集合,类似于...

    mongodb学习笔记

    mongodb学习笔记 MongoDB 是一个基于分布式文件存储的开源数据库系统,主要用于处理大量数据的存储和查询。以下是 MongoDB 的一些基本操作和技巧: 插入文档 MongoDB 中可以使用 `insert` 方法来插入文档,例如 ...

    mongodb学习笔记和mongodb权威指南

    首先,`mongodb_and_python`学习笔记可能涵盖了如何使用Python编程语言与MongoDB进行交互。Python是常见的MongoDB驱动程序之一,通过PyMongo库,开发者可以方便地执行CRUD(创建、读取、更新、删除)操作,构建复杂...

    MongoDB学习笔记思维导图

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

    MongoDB学习笔记1

    MongoDB 是一种流行的开源、非关系型数据库系统,以其灵活性、高性能和易用性而备受开发者青睐。在本文中,我们将深入探讨 ...在实际项目中,学习和掌握 MongoDB 及其驱动程序能够帮助你更好地应对现代数据存储需求。

    mongoDB学习笔记及工具.zip

    本压缩包“mongoDB学习笔记及工具.zip”包含了一些资源,帮助你深入理解和掌握MongoDB的相关知识。 1. **笔记(note.txt)**: 这个文件可能是对MongoDB的基础概念、安装过程、基本操作和进阶特性的详细记录。笔记...

    MongoDB学习笔记(六) MongoDB索引用法和效率分析

    MongoDB是一种流行的NoSQL数据库,它的索引机制与传统的关系型数据库类似,旨在提升查询和排序的速度。在MongoDB中,索引对于优化查询性能至关重要,尤其在处理大量数据时。下面将详细介绍MongoDB中不同类型的索引...

    MongoDB_学习笔记

    ### MongoDB 学习笔记知识点详解 #### 一、MongoDB 命令行基础操作 **1.1 帮助命令** - **help**:显示 MongoDB shell 的基本帮助信息。 - **db.help()**:提供当前数据库的帮助信息。 - **db.mycoll.help()**:...

    MongoDB学习笔记之GridFS使用介绍

    MongoDB的GridFS是一个强大的文件存储系统,专为在数据库中存储和检索大量小文件而设计。GridFS将文件拆分为多个数据块(chunk),每个块都有自己的文档存储在`fs.chunks`集合中,而文件元信息则保存在`fs.files`集合...

    MongoDB学习总结笔记

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

    MongoDB最详细学习笔记.txt

    MongoDB最详细学习笔记

Global site tag (gtag.js) - Google Analytics