Mongodb修改器的使用
来源:互联网 发布:javascript写的小游戏 编辑:程序博客网 时间:2024/05/17 03:09
1 修改器
1.1 $set修改器
【1】说明
$set用来指定一个键的值;
如果键不存在,则创建它;
【2】练习
a.使用集合blog的一个文档
--db.blog.find()
/* 1 */
{
"_id" : ObjectId("57f9eabbd01d44ba3aaeb26c"),
"title" : "my blog post",
"content" : "update",
"date" : ISODate("2016-10-09T06:51:54.710Z")
}
b.此文档添加喜欢的书籍
/*
db.blog.update(
{"_id" : ObjectId("57f9eabbd01d44ba3aaeb26c")},
{"$set":{"favorite book":"war and peace"}}
)
*/
c.查看添加之后的结果
/* 1 */
{
"_id" : ObjectId("57f9eabbd01d44ba3aaeb26c"),
"title" : "my blog post",
"content" : "update",
"date" : ISODate("2016-10-09T06:51:54.710Z"),
"favorite book" : "war and peace"
}
d.修改此文档,favorite book喜欢的数据
db.blog.update(
{"_id" : ObjectId("57f9eabbd01d44ba3aaeb26c")},
{"$set":{"favorite book":"green eggs and ham"}}
)
【3】使用set修改内嵌文档(使用.)
a.准备内嵌文档
var a=db.blog.findOne();
a.author={"name":"clark","email":"xu_chl@163.com"};
db.blog.update(
{"_id" : ObjectId("57f9eabbd01d44ba3aaeb26c")},
a
);
b.修改内嵌文档
db.blog.update(
{"_id" : ObjectId("57f9eabbd01d44ba3aaeb26c")},
{"$set":{"author.name":"xu_chl"}}
)
--result:
/* 1 */
{
"_id" : ObjectId("57f9eabbd01d44ba3aaeb26c"),
"title" : "my blog post",
"content" : "update",
"date" : ISODate("2016-10-09T06:51:54.710Z"),
"favorite book" : "green eggs and ham",
"author" : {
"name" : "xu_chl",
"email" : "xu_chl@163.com"
}
}
1.2 $inc修改器
【1】描述
$inc修改器用来增加已经有键的值,或者在键不存在的时候创建一个键
用途:分析数据,投票,其他变化数值的地方
【2】联系-游戏
a.场景:
射击游戏,子弹打在靶子上,给玩家加分
b.创建一个文档
db.games.insert(
{"game":"shooting","user":"clark"}
)
b.射击中靶一次,增加5分
db.games.update(
{"game":"shooting","user":"clark"},
{"$inc":{"score":5}}
)
c.射击中靶心,加分50分
db.games.update(
{"game":"shooting","user":"clark"},
{"$inc":{"score":50}}
)
d.结果为
/* 1 */
{
"_id" : ObjectId("57fb3bdcd01d44ba3aaeb26d"),
"game" : "shooting",
"user" : "clark",
"score" : 55.0
}
【3】特别注意:
$inc只允许是数字类型;Modifier$inc allowed for numbers only;
1.3 数组修改器
【1】说明
如果键存在,$push会向已有的数组末尾加入一个元素
如果键不存在,则创建新的数组
【2】练习
a.目的:添加一个包含一个数组的comments键
b.增加键comments,值是数组,包含两个元素
db.blog.update(
{"_id" : ObjectId("57f9eabbd01d44ba3aaeb26c")},
{"$push":{"comments":
[{"name":"xuclc","email":"xchl00@163.com"},
{"name":"clark","email":"xu_chl@163.com"}
]
}
}
)
c.查看结果
/* 1 */
{
"_id" : ObjectId("57f9eabbd01d44ba3aaeb26c"),
"title" : "my blog post",
"content" : "update",
"date" : ISODate("2016-10-09T06:51:54.710Z"),
"favorite book" : "green eggs and ham",
"author" : {
"name" : "xu_chl",
"email" : "xu_chl@163.com"
},
"comments" : [
[
{
"name" : "xuclc",
"email" : "xchl00@163.com"
},
{
"name" : "clark",
"email" : "xu_chl@163.com"
}
]
]
}
d.修正
var a=db.blog.findOne();
delete a.comments;
db.blog.update(
{"_id" : ObjectId("57f9eabbd01d44ba3aaeb26c")},
a
);
db.blog.findOne();
db.blog.update(
{"_id" : ObjectId("57f9eabbd01d44ba3aaeb26c")},
{"$push":{"comments":
{"name":"xuclc","email":"xchl00@163.com"}
}
}
);
db.blog.update(
{"_id" : ObjectId("57f9eabbd01d44ba3aaeb26c")},
{"$push":{"comments":
{"name":"clark","email":"xu_chl@163.com"}
}
}
)
db.blog.findOne();
【3】查询文档$ne和$push的联合使用
a.场景:一个值如果不在数组中,就加入到数组中,否则就不加;
b.语句
--正确的语句:
db.blog.update(
{"comments.name": {"$ne":"clark"} },
{"$push":{"comments":
{"name":"clark","email":"xu_chl@163.com"}
}
}
);
--错误的语句
db.blog.update(
{"comments": {"$ne":"clark"} },
{"$push":{"comments":
{"name":"clark","email":"xu_chl@163.com"}
}
}
);
【4】$addToSet 避免重复
a.测试重复push:--无法插入
db.blog.update(
{"_id" : ObjectId("57f9eabbd01d44ba3aaeb26c")},
{"$addToSet":{"comments":
{"name":"clark","email":"xu_chl@163.com"}
}
}
);
【5】$addToSet和$each
a.初始化
var a=db.blog.findOne();
delete a.comments;
db.blog.update(
{"_id" : ObjectId("57f9eabbd01d44ba3aaeb26c")},
a
);
db.blog.findOne();
db.blog.update(
{"_id" : ObjectId("57f9eabbd01d44ba3aaeb26c")},
{"$addToSet":{
"comments":{
"$each":[{"name":"clark","email":"xu_chl@163.com"},
{"name":"xuclc","email":"xchl00@163.com"}
]
}
}
}
);
b.再次执行
db.blog.update(
{"_id" : ObjectId("57f9eabbd01d44ba3aaeb26c")},
{"$addToSet":{
"comments":{
"$each":[{"name":"clark","email":"xu_chl@163.com"},
{"name":"xuclc","email":"xchl00@163.com"}
]
}
}
}
);
发现,无法插入了
【5】$pop
a.作用:把数组看成一个栈,删除数据
b.使用:{$pop:{key:1}}从末尾删除
{$pop:{key:-1}}从头部删除
- Mongodb修改器的使用
- MongoDB 数组的定位修改器的使用
- 【MongoDB】4.MongoDB 原子修改器的 极速修改
- mongodb的一些修改器(1)
- MongoDB数据库更新操作的十种修改器的使用
- MongoDB 修改器 简介
- Mongodb 修改器
- MongoDB修改器
- mongodb修改器总结
- Mongodb修改器
- Mongodb 修改器
- MongoDB修改器
- mongodb修改器:
- Mongodb修改列的数据类型
- MongoDb的添加,查询,修改
- mongoDB的查询与修改
- mongodb "数组的定位修改器" —— $或.
- MongoDB shell原子性更新修改器的应用
- Access restriction: The type SunJCE is not accessible due to restriction on required
- JDBC操作数据库详解
- 我的第一篇博客,
- SQL 存储过程 取前一天、一月、一年的时间
- window 桌面图标不正常显示解决办法
- Mongodb修改器的使用
- volatile关键字的作用
- 欢迎使用CSDN-markdown编辑器
- CSS学习笔记
- 使用Eclipse开发Java程序
- Charles 从入门到精通
- Parse 关停与开发者服务健康发展
- Hibernate从入门到精通(十)多对多单向关联映射
- C++ STL中的vector的内存分配与释放