php mongo save,mongodb之insert和save函数的区别 - 金牛座, 爬山虎, PHPCreeper, Workerman, Swoole, PHP爬虫引擎, PHP爬虫框架,...

本文介绍了MongoDB中save函数的工作原理,它根据参数条件灵活调用insert或update函数。当数据对象已存在时,save函数会更新原有对象;若对象不存在,则执行插入操作。save函数的特点可以总结为'有则改之,无则加焉',提供了一种简洁的数据管理方式。
摘要由CSDN通过智能技术生成

MongDB有个很方便的地方,只打函数的名字而不加括号,就能查看该函数的功能用法:

> db.user.insert

function (obj, _allow_dot) {

if (!obj) {

throw "no object passed to insert!";

}

if (!_allow_dot) {

this._validateForStorage(obj);

}

if (typeof obj._id == "undefined" && !Array.isArray(obj)) {

var tmp = obj;

obj = {_id:new ObjectId};

for (var key in tmp) {

obj[key] = tmp[key];

}

}

this._db._initExtraInfo();

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

this._lastID = obj._id;

this._db._getExtraInfo("Inserted");

}

> db.user.save

function (obj) {

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

throw "can't save a null";

}

if (typeof obj == "number" || typeof obj == "string") {

throw "can't save a number or string";

}

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

obj._id = new ObjectId;

return this.insert(obj);

} else {

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

}

}

由上面可以看出,save函数实际就是根据参数条件,调用了insert或update函数.如果想插入的数据对象存在,insert函数会报错,而save函数是改变原来的对象;如果想插入的对象不存在,那么它们执行相同的插入操作.这里可以用几个字来概括它们两的区别,即所谓"有则改之,无则加之".

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值