首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

MongoDB学习札记(四)

2012-07-04 
MongoDB学习笔记(四)现在这节就主要讨论插入,更新和删除文档。插入:MongoDB学习笔记(一)中有讲 这里就简单

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学习笔记(一)中的参考资料

热点排行