日期:2014-05-16  浏览次数:20575 次

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"