mongodb增删改查之$set

1,842次阅读
没有评论

mongodb增删改查之$set

在上一篇文章中给出了使用文档替换的方法来实现数据的更新的,但是大部分情况下都是涉及文档内部的数据更新,所以可以使用$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
}

admin
版权声明:本站原创文章,由admin2018-05-19发表,共计1219字。
转载提示:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)