学习MongoDB
一、安装
在window的环境下安装MongoDB:
MongoDB下载地址
点击下载即可
- 安装软件
- 启动mongo服务,每次启动MongoDB的服务的时候都需要以管理员的身份在命令行中输入以下代码:
你安装的MongoDB的bin文件下 > mongod --dbpath "d://mongodb//data" --logpath "d://mongodb//log//mongodb.log" --logappend
mongod --dbpath 命令是创建数据库文件的存放位置,启动mongodb服务时需要先确定数据库文件存放的位置,否则系统不会自动创建,启动会不成功。 --logpath 表示日志文件存放的路径 --logappend 表示以追加的方式写日志文件
- 点击软件所在的地方的 bin 文件夹下的 mongo.exe 运行软件
出现弹窗就可以开始输入一些命令了,例如:
- 在安装MongoDB的时候会要求你下载MongoDB Compass 这是一个MongoDB数据库的可视化工具
默认的端口号是27017,点击 connect 链接数据库,就可以看到你本地的数据库的相关数据了,可以用这个工具去添加数据库的表,也可以用shell命令行来添加
MongoDB基本的命令
show dbs
: 显示已有数据库,如果你刚安装好,会默认有local、admin(config),这是MongoDB的默认数据库,我们在新建库时是不允许起这些名称的。use 数据库的名字
: 进入数据,也可以理解成为使用数据库。成功会显示:switched to db 数据库的名字,也有创建数据库的功能。show collections
: 显示数据库中的集合(关系型中叫表,我们要逐渐熟悉)。db
: 显示当前位置,也就是你当前使用的数据库名称,这个命令算是最常用的,因为你在作任何操作的时候都要先查看一下自己所在的库,以免造成操作错误。use db(建立数据库)
:use不仅可以进入一个数据库,如果你敲入的库不存在,它还可以帮你建立一个库。但是在没有集合前,它还是默认为空。db.集合.insert( )
:新建数据集合和插入文件(数据),当集合没有时,这时候就可以新建一个集合,并向里边插入数据。Demo:db.user.insert({“name”:”jspang”})db.集合.find( )
:查询所有数据,这条命令会列出集合下的所有数据,可以看到MongoDB是自动给我们加入了索引值的。Demo:db.user.find()db.集合.findOne( )
:查询第一个文件数据,这里需要注意的,所有MongoDB的组合单词都使用首字母小写的驼峰式写法。db.集合.update({查询},{修改})
:修改文件数据,第一个是查询条件,第二个是要修改成的值。这里注意的是可以多加文件数据项的,比如下面的例子。
用JS写MongoDB执行语句
goTask.js文件
var userName="Emma"; //声明一个登录名
var timeStamp=Date.parse(new Date()); //声明登录时的时间戳
var jsonDdatabase={"loginUser":userName,"loginTime":timeStamp}; //组成JSON字符串
var url = "mongodb://localhost:27017/admin";
var db = connect(url); //链接数据库
db.login.insert(jsonDdatabase); //插入数据
print('connect success'); //没有错误显示成功
然后像执行node文件那样,在这个文件所在的地方打开命令行,执行语句是 mongo js文件名
就会看到上面的结果。这就实现了简单的操作数据库
MongoDB用js实现增删改查
// 批量插入
var db = connect('mongodb://localhost:27017/admin'); //链接数据库
var user1 = {
"_id" : 1,
"name" :"Emma",
"sex" : 0,
"age" : 24,
"skill" : [ "web前端","javascript"]
}
var user2 = {
"_id" : 2,
"name" :"Jack",
"sex" : 0,
"age" : 26,
"skill" : [ "Java","PHP"]
}
var user3 = {
"_id" : 3,
"name" :"Meg",
"sex" : 1,
"age" : 20,
"skill" : [ "UI","Photoshop"]
}
// 表格的名字叫test
db.test.insert([user1,user2,user3])
执行之后打开MongoDB compass就可以看到admin 下多了一个表格叫 test,里面有你刚才添加的内容
修改:
var db = connect('user'); //链接数据库
db .test.update({"name":"Emma"},{"$set":{sex:1,age:21}})
// $unset用于将key删除
db.test.update({"name":"Emma"},{$unset:{"age" : ' ' }})
// $inc对数字进行计算 它是对value值的修改,但是修改的必须是数字,字符串是不起效果的。
// 我们现在要对MiJie的年龄减去2岁,就可以直接用$inc来操作。
db.test.update({"name":"Emma"},{$inc:{"age":-3}})
// multi选项 multi是有ture和false两个值,true代表全部修改,false代表只修改一个(默认值)
db.test.update({},{$set:{interset:[]}},{multi:true})
// upsert选项 upsert是在找不到值的情况下,直接插入这条数据。比如我们这时候又来了一个成员xiaoba,
// 我们这时候修改他的信息,age设置成20岁,但集合中并没有这条数据。这时候可以使用upsert选项直接添加。
db.test.update({name:'xiaoba'},{$set:{age:20}},{upsert:true})
// $push追加数组/内嵌文档值
db.test.update({name:'xiaoba'},{$push:{interest:'draw'}})
// $ne查找是否存在 它主要的作用是,检查一个值是否存在,如果不存在再执行操作,存在就不执行,这个很容易弄反。
db.test.update({name:'xiaoba',"interest":{$ne:'playGame'}},{$push:{interest:'Game'}})
// $addToSet 升级版的$ne
// 它是$ne的升级版本(查找是否存在,不存在就push上去),操作起来更直观和方便,所以再工作中这个要比$en用的多。
db.test.update({name:"xiaoba"},{$addToSet:{interest:"readBook"}})
// $each 批量追加 它可以传入一个数组,一次增加多个值进去,相当于批量操作,性能同样比循环操作要好很多,
// 这个是需要我们注意的,工作中也要先组合成数组,然后用批量的形式进行操作。
var newInterset=["Sing","Dance","Code"];
db.test.update({name:"xiaoba"},{$addToSet:{interest:{$each:newInterset}}})