MongoDb进阶实践之五 MongoDB修改命令详述
一、引言
上一篇文章我们已经详细介绍了MongoDB数据库的有关查询的内容,但是这只是所有查询命令的冰山一角。所有查询命令都写完也没有必要,我只是写了一些常用的命令,对MongoDB的操作有一个基本的认识,如果大家想继续深入,可以根据自己的需要深入学习其他的命令。今天要讲一些和更新、修改有关系的语句、命令或者方法,当然不可能是所有的命令了,也只是一些常用的命令。我提供给大家一个基础,大家可以继续深入,我也会继续深入学习的。废话不多说,马上开始我们今天的写作吧。
二、MongoDB有关修改的详解
我比较直接,还是直接来内容吧,有关修改的每个方法都有示例代码,应该不是很难,希望能起到抛砖引玉的作用吧。
1、update() 方法
1.1、update() 方法用于更新已存在的文档。语法格式如下:
db.collectionName.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
参数说明:
query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。
1.2、示例代码
> db.students.find({"name":"FangShiYu"})
{ "_id" : ObjectId("5ab9de223afa6504457050e2"), "name" : "FangShiYu", "age" : 22, "sex" : 1, "school" : "ZheJiangDaXue", "address" : "GuangDongGuangZhou" }
//修改【name】是【FangShiYu】的【age】字段的值为【25】
> db.students.update({"name":"FangShiYu"},{"$set":{"age":25}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.students.find({"name":"FangShiYu"})
{ "_id" : ObjectId("5ab9de223afa6504457050e2"), "name" : "FangShiYu", "age" : 25, "sex" : 1, "school" : "ZheJiangDaXue", "address" : "GuangDongGuangZhou" }
>
2、$set 修改器:针对指定字段设置指定的值,修改字段的值
语法:db.collectionName.update({query},{"$set":{<key>:<value>}})
参数说明:
query:查询条件
key:要操作的字段名
value:要给key字段赋的值
在MongoDB数据库中通过 $set 修改器和 update()方法配合使用,起到修改指定字段的作用。
2.1、示例代码:
> db.students.find({"name":"FangShiYu"})
{ "_id" : ObjectId("5ab9de223afa6504457050e2"), "name" : "FangShiYu", "age" : 22, "sex" : 1, "school" : "ZheJiangDaXue", "address" : "GuangDongGuangZhou" }
//修改【name】是【FangShiYu】的【age】字段的值为【25】
> db.students.update({"name":"FangShiYu"},{"$set":{"age":25}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.students.find({"name":"FangShiYu"})
{ "_id" : ObjectId("5ab9de223afa6504457050e2"), "name" : "FangShiYu", "age" : 25, "sex" : 1, "school" : "ZheJiangDaXue", "address" : "GuangDongGuangZhou" }
>
2、$inc 修改器:在数值字段在原有的基础上再增加指定的数值,其值可以是正数,也可以是负数,负数是减多少
语法:db.collectionName.update({query},{"$inc":{<key>:number}})
参数说明:
query:查询条件
key:要操作的字段名
number:增加的数量,可以是正数也可以是负数,正数相加,负数相减
在MongoDB数据库中通过 $inc 修改器和 update()方法配合使用,起到让数值字段在原有的基础上增加指定的数值的作用。
2.1、示例代码:【age】字段在原有基础上加 【正数:1】
> db.students.find({"name":"FangShiYu"})
{ "_id" : ObjectId("5ab9de223afa6504457050e2"), "name" : "FangShiYu", "age" : 25, "sex" : 1, "school" : "ZheJiangDaXue", "address" : "GuangDongGuangZhou" }
//修改【name】是【FangShiYu】的【age】字段的值,让其值增加1,最受值为【26】
> db.students.update({"name":"FangShiYu"},{"$inc":{"age":1}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.students.find({"name":"FangShiYu"})
{ "_id" : ObjectId("5ab9de223afa6504457050e2"), "name" : "FangShiYu", "age" : 26, "sex" : 1, "school" : "ZheJiangDaXue", "address" : "GuangDongGuangZhou" }
>
2.2、示例代码:【age】字段在原有基础上加 【负数:-5】
> db.students.find({"name":"FangShiYu"})
{ "_id" : ObjectId("5ab9de223afa6504457050e2"), "name" : "FangShiYu", "age" : 26, "sex" : 1, "school" : "ZheJiangDaXue", "address" : "GuangDongGuangZhou" }
> db.students.update({"name":"FangShiYu"},{"$inc":{"age":-5}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.students.find({"name":"FangShiYu"})
{ "_id" : ObjectId("5ab9de223afa6504457050e2"), "name" : "FangShiYu", "age" : 21, "sex" : 1, "school" : "ZheJiangDaXue", "address" : "GuangDongGuangZhou" }
>
3、$push 修改器:针对指定的字段插入文档列表,如果该字段不存在,会建立该字段并插入内文档容,如果存在,就向该字段的列表里追加文档内容。例如:留言板
documents={document}
语法:db.collectionName.update({query},{"$push":{<key>:document}})
参数说明:
query:查询条件
document:一个文档对象
key:要操作的字段名
在MongoDB数据库中通过 $push 修改器和 update()方法配合使用,起到留言板的效果,比如:多个人可以给某一个女生留言,每条留言就是一个文档,多个文档组成列表
2.1、示例代码:【messages】集合中原来没有【comments】字段
//原始记录
> db.messages.find()
{ "_id" : ObjectId("5abdc29b678c8239350e8a20"), "name" : "peny", "age" : 22, "sex" : 0 }
> query={"name":"tom","say":"i love u!"}
{ "name" : "tom", "say" : "i love u!" }
> db.messages.update({"name":"peny"},{"$push":{"comments":query}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
//网【messages】集合中增加了【comments】字段,并增加了一个列表,也可以说数组
> db.messages.find()
{ "_id" : ObjectId("5abdc29b678c8239350e8a20"), "name" : "peny", "age" : 22, "sex" : 0, "comments" : [ { "name" : "tom", "say" : "i love u!" } ] }
>
2.2、示例代码:在【messages】集合基础上继续向【comments】字段追加文档内容
//原始记录
> db.messages.find()
{ "_id" : ObjectId("5abdc29b678c8239350e8a20"), "name" : "peny", "age" : 22, "sex" : 0, "comments" : [ { "name" : "tom", "say" : "i love u!" } ] }
> query={"name":"jim","say":"i want to know you!"}
{ "name" : "jim", "say" : "i want to know you!" }
> db.messages.update({"name":"peny"},{"$push":{"comments":query}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.messages.find()
{ "_id" : ObjectId("5abdc29b678c8239350e8a20"), "name" : "peny", "age" : 22, "sex" : 0, "comments" : [ { "name" : "tom", "say" : "i love u!" }, { "name" : "jim", "say" : "i want to know you!" } ] }
>
4、$each 修改器: $each 修改器、$push 修改器必须组合使用,可以一次增加由多个文档组成的列表,字段有,就追加文档,没有就创建该字段并增加一个由多个文档组成的列表数据
documents=[{document1},{document2},{document3}....{documentn}]
语法:db.collectionName.update({query},{"$push":{<key>:{"$each":documents}}})
参数说明:
query:查询条件
documents:文档列表,也可以称文档数组
key:要操作的字段名
在MongoDB数据库中通过 $each 修改器、$push 修改器 和 update()方法配合使用,起到的作用类似一次插入由多个文档组成的列表。
2.1、示例代码:【messages】集合中原来没有【comments】字段
//原始记录
> db.messages.find()
{ "_id" : ObjectId("5abdc844678c8239350e8a21"), "name" : "peny", "age" : 22, "sex" : 0 }
>query=[{"name":"tom","say":"hello!"},{"name":"jackey","say":"i love u!"},{"name":"jerry","say":"i want u"}];
[
{
"name" : "tom",
"say" : "hello!"
},
{
"name" : "jackey",
"say" : "i love u!"
},
{
"name" : "jerry",
"say" : "i want u"
}
]
> db.messages.update({"name":"peny"},{"$push":{"comments":{"$each":query}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.messages.find()
{ "_id" : ObjectId("5abdc844678c8239350e8a21"), "name" : "peny", "age" : 22, "sex" : 0, "comments" : [ { "name" : "tom", "say" : "hello!" }, { "name" : "jackey", "say" : "i love u!" }, { "name" : "jerry", "say" : "i want u" } ] }
>
2.2、示例代码:在【messages】集合基础上继续向【comments】字段追加文档内容
//原始记录
> db.messages.find()
{ "_id" : ObjectId("5abdc844678c8239350e8a21"), "name" : "peny", "age" : 22, "sex" : 0, "comments" : [ { "name" : "tom", "say" : "hello!" }, { "name" : "jackey", "say" : "i love u!" }, { "name" : "jerry", "say" : "i want u" } ] }
> query=[{"name":"jason","say":"i know you!"},{"name":"bob","say":"i miss you!"}];
[
{
"name" : "jason",
"say" : "i know you!"
},
{
"name" : "bob",
"say" : "i miss you!"
}
]
> db.messages.update({"name":"peny"},{"$push":{"comments":{"$each":query}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
//追加了文档数据
> db.messages.find()
{ "_id" : ObjectId("5abdc844678c8239350e8a21"), "name" : "peny", "age" : 22, "sex" : 0, "comments" : [ { "name" : "tom", "say" : "hello!" }, { "name" : "jackey", "say" : "i love u!" }, { "name" : "jerry", "say" : "i want u" }, { "name" : "jason", "say" : "i know you!" }, { "name" : "bob", "say" : "i miss you!" } ] }
>
5、$slice 修改器:控制记录保存的条数,如果以前有多条会把以前的清空保存条件所规定的记录,如果操作的字段不存在,就会创建该字段
documents=[{document1},{document2},{document3}....{documentn}]
语法:db.collectionName.update({query},{$push:{<key>:{$each:documents,$slice:number}}})
参数说明:
query:查询条件
documents:文档列表,也可以称文档数组
key:要操作的字段名
number:控制显示的数量,正数保留最早的number条记录,负数保留最新的number条记录
2.1、示例代码:【messages】集合中原来没有【comments】字段
//原始记录
> db.messages.find()
{ "_id" : ObjectId("5abdceca678c8239350e8a22"), "name" : "peny", "age" : 18, "sex" : 0 }
> var query=[{"name":"lilei","say":"hello"},{"name":"hanmeimei","say":"i miss u"},{"name":"tom","say":"i watch u"},{"monster":"ghost","say":"i want u"}];
//保存最早的两条记录,也就是【name】分别是:lilei和hanmeimei
> db.messages.update({"name":"peny"},{$push:{"comments":{$each:query,$slice:2}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.messages.find()
{ "_id" : ObjectId("5abdceca678c8239350e8a22"), "name" : "peny", "age" : 18, "sex" : 0, "comments" : [ { "name" : "lilei", "say" : "hello" }, { "name" : "hanmeimei", "say" : "i miss u" } ] }
>
2.2、示例代码:在【messages】集合基础上向【comments】字段文档内容
//原始记录
> db.messages.find()
{ "_id" : ObjectId("5abdceca678c8239350e8a22"), "name" : "peny", "age" : 18, "sex" : 0, "comments" : [ { "name" : "lilei", "say" : "hello" }, { "name" : "hanmeimei", "say" : "i miss u" } ] }
> var query=[{"name":"tom","say":"i watch u"},{"monster":"ghost","say":"i want u"}];
//只会保留最新的记录,也就是【name】的值是:monster的文档
> db.messages.update({"name":"peny"},{$push:{"comments":{$each:query,$slice:1}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : -1 })
> db.messages.find()
{ "_id" : ObjectId("5abdceca678c8239350e8a22"), "name" : "peny", "age" : 18, "sex" : 0, "comments" : [ {"monster":"ghost","say":"i want u"}] }
>
6、$addToSet 修改器:当插入一个数组时,如果数组中有重复记录,只会直插入一条,不会重复插入,会过滤掉重复的记录
documents=[{document1},{document2},{document3}...{documentn}]
语法:db.collectionName.update({query},{"$addToSet":{<key>:{"$each":documents}}})
参数说明:
query:查询条件
documents:要插入的文档数组,也可以称作是列表,其中可以包含重复的文档
<key>:表示要插入数组列表的字段
代码实例:
//原始数据
> db.messages.find()
{ "_id" : ObjectId("5ac5b03525eb395526dc108d"), "name" : "peny", "age" : 18, "sex" : "0" }
//定义要插入的文档数组,里面有重复记录,只有最后一个文档不同
> var documents=[{"name":"bob","say":"hi"},{"name":"bob","say":"hi"},{"name":"bob","say":"hi"},{"name":"bob","say":"hello"}];
//执行更新成功
> db.messages.update({"name":"peny"},{"$addToSet":{"comments":{"$each":documents}}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
//查询结果,值插入两条记录
> db.messages.find()
{ "_id" : ObjectId("5ac5b03525eb395526dc108d"), "name" : "peny", "age" : 18, "sex" : "0", "comments" : [ { "name" : "bob", "say" : "hi" }, { "name" : "bob", "say" : "hello" } ] }
>
7、$pop修改器【删除】:从数组中进行向前删除或者向后删除,+1正数表示从尾部开始删除,-1负数表示从头开始删除。
语法:db.collectionName.update({query},{"$pop":{<key>:1(从后开始删除)/-1(从头开始删除)}})
参数说明:
query:查询条件
<key>:表示要执行删除操作的字段名,该字段必须是数组字段
1(从后开始删除)/-1(从头开始删除),只能是数字1和-1,其他值非法
代码实例:
//原始数据
> db.messages.find()
{ "_id" : ObjectId("5ac5b03525eb395526dc108d"), "name" : "peny", "age" : 18, "sex" : "0", "comments" : [ { "name" : "bob", "say" : "hi" }, { "name" : "bob", "say" : "hello" }, { "name" : "bob", "say" : "hi1" }, { "name" : "bob", "say" : "hi2" }, { "name" : "bob", "say" : "hi3" }, { "name" : "bob", "say" : "hello5" } ] }
//执行删除操作,并且执行成功
> db.messages.update({"name":"peny"},{"$pop":{"comments":-1}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
//执行结果,把comments数组的第一个元素删除了
> db.messages.find()
{ "_id" : ObjectId("5ac5b03525eb395526dc108d"), "name" : "peny", "age" : 18, "sex" : "0", "comments" : [ { "name" : "bob", "say" : "hello" }, { "name" : "bob", "say" : "hi1" }, { "name" : "bob", "say" : "hi2" }, { "name" : "bob", "say" : "hi3" }, { "name" : "bob", "say" : "hello5" } ] }
8、$pull修改器【删除】:根据指定条件删除数组字段里面的指定文档数据,pop只能删除头部或者尾部的数据
语法:db.collectionName.update({query},{"$pull":{<key>:{query2}}})
参数说明:
query:查询条件
documents:要插入的文档数组,也可以称作是列表,其中可以包含重复的文档
<key>:表示要执行删除操作的字段名,该字段必须是数组字段
query2:查询数组字段中指定文档数据的查询条件
代码实例:
//原始数据
> db.messages.find()
{ "_id" : ObjectId("5ac5b03525eb395526dc108d"), "name" : "peny", "age" : 18, "sex" : "0", "comments" : [ { "name" : "bob", "say" : "hello" }, { "name" : "bob", "say" : "hi1" }, { "name" : "bob", "say" : "hi2" }, { "name" : "bob", "say" : "hi3" }, { "name" : "bob", "say" : "hello5" } ] }
//执行删除操作,并且执行成功
> db.messages.update({"name":"peny"},{"$pull":{"comments":{"say":"hi2"}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
//结果数据,已经删除了说话内容是“hi2”的文档
> db.messages.find()
{ "_id" : ObjectId("5ac5b03525eb395526dc108d"), "name" : "peny", "age" : 18, "sex" : "0", "comments" : [ { "name" : "bob", "say" : "hello" }, { "name" : "bob", "say" : "hi1" }, { "name" : "bob", "say" : "hi3" }, { "name" : "bob", "say" : "hello5" } ] }
9、下标操作符
9.1、根据查询条件,确定要修改的记录,然后对数组字段中第n(索引值是n-1)个文档的指定指定字段进行值的修改
语法:db.collectionName.update({query},{"$set":{<key>.index.<key2>:<vlaue>}})
参数说明:
query:查询条件,确定需要修改的文档
$set:修改器,对某个字段进行赋值
<key>:表示要执行操作的字段名,该字段必须是数组字段,是顶级字段名
index:数组字段中包含多个文档,每个文档都对应这个一个具体的下标,不要过界,下标值从0开始,如:comments字段是留言板,该字段里面包含了5个文档,每个文档都是一份具体的留言内容,如果想引用数组字段中的某一个文档,可以通过下标,comments.0.say,表示comments字段里面第一份留言say的内容是什么。
key2:具有指定下标值的文档数据的字段名,这个字段的值将会被修改
value:把value表示的内容赋给key2所表示的字段
示例代码:
//原始数据
> db.messages.find()
{ "_id" : ObjectId("5ac5b03525eb395526dc108d"), "name" : "peny", "age" : 18, "sex" : "0", "comments" : [ { "name" : "bob", "say" : "hello" }, { "name" : "bob", "say" : "hi1" }, { "name" : "bob", "say" : "hi3" }, { "name" : "bob", "say" : "hello5" } ] }
//需要修改【comments】字段里面下标为【2】的【say】字段的值,修改成功
> db.messages.update({"name":"peny"},{"$set":{"comments.2.say":"i am modifing!"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
//修改成功
> db.messages.find()
{ "_id" : ObjectId("5ac5b03525eb395526dc108d"), "name" : "peny", "age" : 18, "sex" : "0", "comments" : [ { "name" : "bob", "say" : "hello" }, { "name" : "bob", "say" : "hi1" }, { "name" : "bob", "say" : "i am modifing!" }, { "name" : "bob", "say" : "hello5" } ] }
//修改【comments】字段下标是【1】的【say】字段的值
> db.messages.update({"name":"peny"},{"$set":{"comments.1.say":"i am modifing!"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
//修改成功
> db.messages.find()
{ "_id" : ObjectId("5ac5b03525eb395526dc108d"), "name" : "peny", "age" : 18, "sex" : "0", "comments" : [ { "name" : "bob", "say" : "hello" }, { "name" : "bob", "say" : "i am modifing!" }, { "name" : "bob", "say" : "i am modifing!" }, { "name" : "bob", "say" : "hello5" } ] }
9.2、$ 操作符,是一个通配符,可以操作所有符合条件的记录(待测试)
语法:db.collectionName.update({query},{"$set":{<key>.$.<key2>:<vlaue>}})
参数说明:
query:查询条件,确定需要修改的文档
$set:修改器,进行赋值操作
<key>:表示要执行操作的字段名,该字段必须是数组字段,是顶级字段名
$:是指数组字段中所有的文档,不会特指某一个文档
key2:具有指定下标值的文档数据的字段名,这个字段就是被修改的
value:把value表示的内容赋给key2所表示的字段
示例代码:
//原始数据
> db.students.find()
{ "_id" : ObjectId("5ac70d2f7a05450cf60c6887"), "name" : "peny", "age" : 18, "sex" : 0, "comments" : [ { "name" : "bob", "say" : "hello" }, { "name" : "bob", "say" : "i'm changing" }, { "name" : "tom", "say" : "i love y" } ] }
//修改留言板里名称是【name】是【bob】的文档,把【say】字段的内容修改为【I'm a robbot】
> db.students.update({"comments.name":"bob"},{"$set":{"comments.$.say":"I'm robbot"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
>
//修改结果
> db.students.find()
{ "_id" : ObjectId("5ac70d2f7a05450cf60c6887"), "name" : "peny", "age" : 18, "sex" : 0, "comments" : [ { "name" : "bob", "say" : "I'm robbot" }, { "name" : "bob", "say" : "i'm changing" }, { "name" : "tom", "say" : "i love y" } ] }
10、upsert 状态的使用:更新操作,也可以执行插入操作
语法:db.collectionName.update({query},{"$set":{<key1>:<value1>,<key2>:<value2>,...<keyn>:<valuen>}},insertBoolean)
如果查询条件没有找到相应的文档,该表达式就会执行插入操作
语法:db.collectionName.update({query},{"$set":{<key1>:<value1>,<key2>:<value2>,...<keyn>:<valuen>}},insertBoolean,multiBoolean)
如果存在多条记录,则会修改所有的文档
参数说明:
query:查询条件,确定需要修改的文档
$set:修改器,用于赋值修改
key1-n:要操作的字段名
value1-n:需要给key字段赋的值,key和value一一对应。
insertBoolean:当记录不存在的时候是否增加记录,true表示增加,false表示不增加
multiBoolean:是否需要修改多条记录,true表示可以修改多条记录,false表示修改第一条记录
示例代码:
//原始数据是空的,
> db.students.find()
>
//按通过修改增加数据
> db.students.update({"name":"peny"},{"$set":{"age":20,"sex":0}},true)
WriteResult({
"nMatched" : 0,
"nUpserted" : 1,
"nModified" : 0,
"_id" : ObjectId("5ac7187f7da6f59ef2f3836a")
})
>
//数据插入成功
> db.students.find()
{ "_id" : ObjectId("5ac7187f7da6f59ef2f3836a"), "name" : "peny", "age" : 20, "sex" : 0 }
>
//如果数据库中存在多条名称重复的记录,为每条记录增加字段
//原始记录,里面有两个叫bob的文档
> db.students.find()
{ "_id" : ObjectId("5ac7187f7da6f59ef2f3836a"), "name" : "peny", "age" : 20, "sex" : 0 }
{ "_id" : ObjectId("5ac7197f7a05450cf60c6888"), "name" : "bob", "age" : 23, "sex" : 1 }
{ "_id" : ObjectId("5ac7198b7a05450cf60c6889"), "name" : "bob", "age" : 18, "sex" : 1 }
//修改了两条,执行成功
> db.students.update({"name":"bob"},{"$set":{"school":"jiangxi"}},false,true)
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })
//查看结果,已经为两个叫bob的记录增加了一个叫school的字段。
> db.students.find()
{ "_id" : ObjectId("5ac7187f7da6f59ef2f3836a"), "name" : "peny", "age" : 20, "sex" : 0 }
{ "_id" : ObjectId("5ac7197f7a05450cf60c6888"), "name" : "bob", "age" : 23, "sex" : 1, "school" : "jiangxi" }
{ "_id" : ObjectId("5ac7198b7a05450cf60c6889"), "name" : "bob", "age" : 18, "sex" : 1, "school" : "jiangxi" }
三、总结
今天就写到这里了,有关更新的内容还很多,今天只是介绍一个大概的内容,让大家对MongoDB的操作有一个初步的印象。随着我们学习的深入,还会有更多的内容更新上来,不忘初衷,继续努力吧。
MongoDb进阶实践之五 MongoDB修改命令详述的更多相关文章
- MongoDb进阶实践之六 MongoDB查询命令详述(补充)
一.引言 上一篇文章我们已经介绍了MongoDB数据库的查询操作,但是并没有介绍全,随着自己的学习的深入,对查询又有了新的东西,决定补充进来.如果大家想看上一篇有关MongoDB查询的 ...
- MongoDb进阶实践之三 Mongodb基本命令详解
一.引言 从今天开始,我要正式开始介绍MongoDB的使用方法了.在此之前,我用了两篇文章分别介绍了如何在Linux系统和Windows系统上安装和配置MongoDB系统.如 ...
- MongoDb进阶实践之八 MongoDB的聚合初探
一.引言 好久没有写东西了,MongoDB系列的文章也丢下好长时间了.今天终于有时间了,就写了一篇有关聚合的文章.一说到“聚合”,用过关系型数据库的人都应该知道它是一个什么东西.关系型数据库有“聚合” ...
- MongoDb进阶实践之三 MongoDB查询命令详述
一.引言 上一篇文章我们已经介绍了MongoDB数据库的最基本操作,包括数据库的创建.使用和删除数据库,文档的操作也涉及到了文档的创建.删除.更新和查询,当然也包括集合的创建.重命 ...
- MongoDb进阶实践之四 MongoDB查询命令详述
一.引言 上一篇文章我们已经介绍了MongoDB数据库的最基本操作,包括数据库的创建.使用和删除数据库,文档的操作也涉及到了文档的创建.删除.更新和查询,当然也包括集合的创建.重命名和删除.有了这些基 ...
- MongoDb进阶实践之七 MongoDB的索引入门
一.引言 好久没有写东西了,MongoDB系列的文章也丢下好长时间了.今天终于有时间了,就写了一篇有关索引的文章.一说到"索引",用过关系型数据库的人都应该知道它是一个什么 ...
- Redis进阶实践之五Redis的高级特性(转载 5)
Redis进阶实践之五Redis的高级特性 一.引言 上一篇文章写了Redis的特征,使用场景,同时也介绍了Redis的基本数据类型,redis的数据类型是操作redis的基础,这个必须好好的掌握.今 ...
- MongoDb进阶实践之二 如何在Windows上配置MongoDB
一.引言 上一篇文章,我介绍了如何在Linux系统上安装和配置MongoDB,其实都不是很难,不需要安装和编译,省去了Make && Make Install 命 ...
- MongoDb进阶实践之一 如何在Linux(CentOS 7)上安装MongoDB
一.NoSQL数据简介 1.NoSQL概念 NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL",是 ...
随机推荐
- iptables 学习
本博客是学习慕课网课程 用iptables搭建一套强大的安全防护盾 整理而成 iptables相当于在ip层挂载一个hook point对用户进行控制 组成: 四张表+ 五条链(hook point) ...
- springboot+springmvc+mybatis项目整合
介绍: 上篇给大家介绍了ssm多模块项目的搭建,在搭建过程中spring整合springmvc和mybatis时会有很多的东西需要我们进行配置,这样不仅浪费了时间,也比较容易出错,由于这样问题的产生, ...
- jq事件
1,ready:当DOM载入就绪可以查询及操纵时绑定一个要执行的函数,在使用之前必须确保body元素的onload事件,,没有注册函数,否则不会触发ready函数. $(document).ready ...
- Problem : 1412 ( {A} + {B} )
//集合中元素是不会重复的,所以完全没有必要将两个集合合并后再进行排序,交换排序的时间效率是O(n^2),将两个集合中的元素分别排序后输出即可.输出格式也非常需要 //注意的.输出一列元素赢以cout ...
- Problem : 1012 ( u Calculate e )
/*tips:本题只有输入,没有输出,在线测试只检测结果,所以将前面几个结果罗列出来就OK了.为了格式输出问题纠结了半天,最后答案竟然还是错的....所以啊,做题还是得灵活变通.*/ #include ...
- 边框0.5px的实现方法
原理: css3 的缩放 ----> transform: scale() 完整代码如下: <!DOCTYPE html> <html lang="en&q ...
- if语句2017-03-17
1.If语句: if(判断条件){ 判断为true的时候执行的语句 } else{ 判断为false的时候执行的语句 } 2.If else语句: if(判断条件){ 判断为true的时 ...
- react-router简明学习
前面的话 路由用来分发请求.后端是提供服务的,所以它的路由是在找controller,前端是显示页面的,所以它的路由是在找component.本文将详细介绍react-router-dom的内容 Ro ...
- NumPy入门
import numpy as np 数组与标量之间的运算作用于数组的每一个元素.
- python实现的txt目录树
首先,我先表述一下我的需求: 我记笔记比较乱,但我比较容易"半途而废".文件夹很多,但大都只有一两个文件.... 所以我需要一种方式,能在不逐个打开文件夹的前提下,"看到 ...