什么是mongDB?
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
1.创建数据库:use firstdb(这条会使用或者创建,如果没有就创建);
2.创建集合:db.createCollection("users") //集合就相对于一个数据库下的一个table;
3.插入数据: db.users.insert({ name:"blue",age:22}) mongDB插入数据以标准的JS对象形式插入;
常用快捷操作:
show dbs 显示所有数据库名;
db显示当前所在位置(使用的是哪个数据库) ;
show collections 显示当前数据库下的集合;
db.dropDatabase( ):删除当前数据库;
db.集合.remove({name:"blue"}) ;删除 当前集合下的一个数据 ;
db.集合.drop() ;删除当前集合;
数据库最常用的操作是update()操作,下面看看:
例如现在给users集合中的 name:"bule"的添加一个爱好属性:
use firstdb
db.user.update({name:"blue"},{$set:{ hobby:"play Pingpang"}}) ; $set会给一个已经存在的数据修改一个属性,如果没有这个属性就增加这个属性和值;
现在删除hobby这个属性:
db.user.update({name:"blue"},{$unset:{ hobby:""}}) ; $unset会把属性和属性值都删掉;
假设现在有一个这样的文件数据:
{name:"bule",age:22,hobby:"play Pingpang"}
{name:"leo",age:29,hobby:"play footbool"}
{name:"lisi",age:24,hobby:"play games"}
变成这样:也就就增加一个数组和多个对象:
{name:"bule",age:22,hobby:"play Pingpang",readingBook:["one night in Beijing","春城","十面埋伏"]}
{name:"leo",age:29,hobby:"play footbool"}
{name:"lisi",age:24,hobby:"play games"}
只需:
db.user.update({name:"blue"},{$addToSet:{readingBook:"one night in Beijing"}) ;
db.user.update({name:"blue"},{$addToSet:{readingBook:"春城"}) ;
db.user.update({name:"blue"},{$addToSet:{readingBook:"十面埋伏"}) ;
或者:
db.user.update({name:"blue"},{$push:{readingBook:"one night in Beijing"}) ;
db.user.update({name:"blue"},{$push:{readingBook:"春城"}) ;
db.user.update({name:"blue"},{$push:{readingBook:"十面埋伏"}) ;
$addToSet跟$set有点类似:不同的是:前者会把一个属性认为是一个数组,不存在就push()进去,存在则不做任何操作;
$addToSet与$push的相同点都是可以往属性后面追加数组;不同的是:$push可以追加多次相同的; 即可以 ["看书","看书","看书"] ;但是$addToSet连续三次操作只会是["看书"]
也可以用简单方式:
var reading_some=[one night in Beijing","春城","十面埋伏] ;
db.user.update({name:"blue"},{$addToSet:{readingBook:{$each:reading_some} }});
如果要从数组中删除一次呢?
db.user.update({name:"blue"},{$pop:{readingBook:1}) ; 1 表示从数组最后一项做一次删除操作; -1 表示从头开始删除一位 ;就算是删除完了再删也不会报错;
查看一下:
db.user.find({}) ;
变成这样:
{name:"bule",age:22,hobby:"play Pingpang",readingBook:["one night in Beijing","春城"]}
如果是吧3个人都加上同样的readingBook呢?
只需要:
db.user.update({},{$addToSet:{readingBook:{$each:reading_some} }}, {malti:true}); malti:true 表示多选:
所以到了这里我们大概明白:update一个参数实际上是一个类似选择器的东西;用了赛选符合条件的数据;
于是数据暂时变成这样:
{name:"bule",age:22,hobby:"play Pingpang",readingBook:["one night in Beijing","春城","十面埋伏"] }
{name:"leo",age:29,hobby:"play footbool",readingBook:["one night in Beijing","春城","十面埋伏"] }
{name:"lisi",age:24,hobby:"play games",readingBook:["one night in Beijing","春城","十面埋伏"] }
如何把bule的readingBook数组的第一项变成 one night in HongKong 呢?
db.user.update({name:"bule"},{$Set:{readingBook.1:"one night in HongKong"}});
所有的呢?
db.user.update({},{$Set:{readingBook.1:"one night in HongKong"}},{ multi :true });
本人做到这里也发现了一个问题:
先执行插入一条:
db.user.insert({name:"kangkang",age:8});
如果其中有一个数据没有 readingBook这个属性:那么 执行上面这条语句会出现一个奇怪的问题:
那么{name:"kangkang",age:8} ==>>> {name:"kangkang",age:8 , readingBook:{ "0" : "one night in HongKong"} }
其实大概也能理解: $set只能生成一个对象值,不能生成一个数组; 所以按数组下标来修改所有数据其实是容易出错的,除非它们都是非常统一的数据;
mongodb upsert怎么插入更新 mongodb updatemany的用法
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Mongodb安装
mongodb安装教程
mongodb 配置文件