• 为了保证你在浏览本网站时有着更好的体验,建议使用类似Chrome、Firefox之类的浏览器~~
    • 如果你喜欢本站的内容何不Ctrl+D收藏一下呢,与大家一起分享各种编程知识~
    • 本网站研究机器学习、计算机视觉、模式识别~当然不局限于此,生命在于折腾,何不年轻时多折腾一下

mongodb增删改查之$set

Sql admin 3个月前 (05-19) 132次浏览 0个评论 扫描二维码

在上一篇文章中给出了使用文档替换的方法来实现数据的更新的,但是大部分情况下都是涉及文档内部的数据更新,所以可以使用$set 的方式来实现。

//db.test.findOne({})
{ 
    "_id" : ObjectId("5afd34052c63ae1a943bdb27"), 
    "name" : "joe", 
    "friends" : 32.0, 
    "enemies" : 2.0
}

现在我们需要使用$set 的方式更改用户的名字

db.test.update({"friends" : 32.0, 
    "enemies" : 2.0},{"$set":{"name":"hello"}})
log 日志如下
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

现在我们在查看下结果

db.test.findOne({"friends" : 32.0, "enemies" : 2.0})
输出结果
{ 
    "_id" : ObjectId("5afd34052c63ae1a943bdb27"), 
    "name" : "hello", 
    "friends" : 32.0, 
    "enemies" : 2.0
}

到目前为止我们使用的直接修改当前已存在字段数据,假设当前的文档数据里面不存在对应的字段会怎么样?
如果当前的要更新的字段在文档中并不存在,那么会给当前的文档自动新增字段

db.test.update({"friends" : 32.0, 
    "enemies" : 2.0},{"$set":{"movie":"titanic"}})
我们尝试更新这个文档的电影字段,希望将字段值更改为 Titanic,但是从刚才的测试数据来看,实际上并没有 movie 字段
现在这个语句的执行结果如下
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

我们在查询看看
{ 
    "_id" : ObjectId("5afd34052c63ae1a943bdb27"), 
    "name" : "hello", 
    "friends" : 32.0, 
    "enemies" : 2.0, 
    "movie" : "titanic"
}

从上面可以看出即使你的文档没有对应的字段在使用$set 会自动给你添加新的字段数据

到这里可以知道怎么去更新文档中某一个字段的内容了,现在我反悔了不想给当前的文档添加 movie 字段,那么我们可以使用$unset 的办法来实现删除这个字段

db.test.update({"friends" : 32.0, 
    "enemies" : 2.0},{"$unset":{"movie":1}})
log 日志
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
修改后的文档的情况
{ 
    "_id" : ObjectId("5afd34052c63ae1a943bdb27"), 
    "name" : "hello", 
    "friends" : 32.0, 
    "enemies" : 2.0
}


Deeplearn, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明mongodb 增删改查之$set
喜欢 (0)
admin
关于作者:

您必须 登录 才能发表评论!