mongoDB初识一二三

栏目: 数据库 · 发布时间: 4年前

内容简介:启动服务端,启动服务的命令的文件是:mongod.exe将会输出服务端相关信息,包括版本,数据库所在路径,监听端口号,数据库大小等等、看到这个说明你已经成功了,默认端口是27017如果有数据说明安装成功

启动服务端,启动服务的命令的文件是:mongod.exe

  • 1.打开命令行(win+R),输入mongod
  • 2.会发现服务并没有启动,报exception(异常)
  • 3.可以在c盘新建data\db文件夹,或者需要新建db文件夹作为数据库存放路径,在 C:\Program Files\MongoDB 下新建一个db文件夹,win+R,输入cmd,然后用cd命令进入 C:\Program Files\MongoDB :\bin目录下,执行如下命令: C:\Program Files\MongoDB\bin>mongod.exe --dbpath C:\Program Files\MongoDB\db

将会输出服务端相关信息,包括版本,数据库所在路径,监听端口号,数据库大小等等、看到这个说明你已经成功了,默认端口是27017

  • 4.服务端开启后,可以用命令行链接服务端,链接文件是mongo.ext,不要关闭服务端Dos,重新打开一个dos窗口,输入mongo,链接后,输入以下指令:
查看存在数据库命令:mongo show dbs
查看数据库版本命令:mongo db.version()
复制代码

如果有数据说明安装成功

mongoDB常用指令

mongo shell 如果以前接触过数据库一定知道每个数据库都有自己独特的命令,MSSQL和 MYsql 用的都是 Sql 命令,MongoDB的操作命令就是前端最熟悉的JavaScript命令。看到这里作为前端你一定会小激动一下,这对前端来说那是极好的。

操作前你需要打开Mongo服务器和链接到服务器-也就是我们的mongod命令和mongo命令

var x='Hello World'
print(x)
复制代码

这里的输出命令不是console.log,而是print

输入函数,输入一半时会有3个点表示没输完的语句可以继续输

MongoDB的存储结构

以前我们的关系型数据库的数据结构都是顶层是库,库下面是表,表下面是数据。但是 MongoDB 有所不同,库下面是集合,集合下面是文件,可以看下面这张图进行了解一下。

mongoddb(非关系型数据库) mysql(关系型数据库)
文件(document) 行(row)
集合(collections) 表(table)
数据库(databases) 数据库(databases)
  • show dbs :显示已有数据库,如果你刚安装好,会默认有local、admin(config),这是MongoDB的默认数据库,我们在新建库时是不允许起这些名称的。
  • use admin: 进入数据,也可以理解成为使用数据库。成功会显示:switched to db admin。
  • 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({查询},{修改}):修改文件数据,第一个是查询条件,第二个是要修改成的值。这里注意的是可以多加文件数据项的,比如下面的例子。
  • db.集合.remove(条件):删除文件数据,注意的是要跟一个条件。Demo:db.user.remove({“name”:”jspang”})
  • db.集合.drop( ):删除整个集合,这个在实际工作中一定要谨慎使用,如果是程序,一定要二次确认。
  • db.dropDatabase( ):删除整个数据库,在删除库时,一定要先进入数据库,然后再删除。实际工作中这个基本不用,实际工作可定需要保留数据和痕迹的。

在js中写mongodb

eg 新建一个login.js文件

var userName = 'niuxiaoling'; // 声明登录名
var timeStamp =  Date.parse(new Date());  //时间戳
var jsonDatebase = {
  'loginName':userName,
  "loginTime":timeStamp
}
var db = connect('log');//use log
db.login.insert(jsonDatebase); // login集合

print('log print success');
复制代码

执行login.js 直接DOS中 mongo login.js

在操作数据库时要注意: 第一个是快速存储能力 第二个是迅速查询能力

批量插入数据

db.test.insert([
    {"_id":1},
    {"_id":2},
    {"_id":3}
])
复制代码

注意一次插入不要超过48M,向.zip和大图片什么的尽量用静态存储,MongoDB存储静态路径就好,这也算是一个规则。

循环插入数据

var startTime = (new Date()).getTime(); //得到开始时间
var  db = connect('log');  //链接数据库
//开始循环
for(let i=0;i<1000;i++){
    db.test.insert({num:i});
}
 
var runTime = (new Date()).getTime()-startTime;//计算时间差
print ('This run this is:'+runTime+'ms');//打印出来 507ms
复制代码

批量插入数据

var startTime = (new Date()).getTime();
var  db = connect('log');
 
 
var tempArray = []              //声明一个数组
for(let i=0;i<1000;i++){        //循环向数组中放入值
    tempArray.push({num:i});
}
db.test.insert(tempArray)       //批量一次插入
 
var runTime = (new Date()).getTime()-startTime;
print ('This run this is:'+runTime+'ms'); // 17ms
复制代码

修改数据的错误点 插入数据文件demo02.js

var db = connect('log')

var webwork = {
  name: 'xiaoling',
  age: 18,
  sex: 0,
  skill: {
    skillOne: 'html',
    skillTwo: 'javascript',
    skillThree: 'node'
  }
}
var webwork1 = {
  name: 'list',
  age: 18,
  sex: 0,
  skill: {
    skillOne: 'html',
    skillTwo: 'javascript',
    skillThree: 'node'
  }
}
var webwork2 = {
  name: 'wangwu',
  age: 18,
  sex: 0,
  skill: {
    skillOne: 'html',
    skillTwo: 'javascript',
    skillThree: 'node'
  }
}
var workmoney = [webwork, webwork1, webwork2]
db.workspace.insert(workmoney)

print('The data was inserted successfully.')
复制代码

错误点:只update修改项

正确的:demo03.js可以声明一个变量,然后把要改变数据的全部信息放入变量,最后执行修改操作。

var db = connect('log')

var webwork2 = {
  name: 'chenming',
  age: 18,
  sex: 0,
  skill: {
    skillOne: 'html',
    skillTwo: 'javascript',
    skillThree: 'node'
  }
}

db.workspace.update({
  name: 'xiaoling'
}, webwork2)

print('[update] the data was updated successfully')
复制代码

需要删除(db.workmate.drop())表中的数据,因为MinJie这个用户已经不在数据库中了,然后重新使用load方法载入插入数据再进行修改。然后执行 db.workmate.drop() load('./demo02.js') load('./demo03.js')

update修改器

  • $set 用来修改一个指定的键值(key)
dbd .workmate.update({"name":"MinJie"},{"$set":{sex:2,age:21}})
复制代码
  • 修改嵌套内容(内嵌文档)
db.workmate.update({"name":"MinJie"},{"$set":{"skill.skillThree":'word'}})
复制代码
  • $unset用于将key值删除
db.workmate.update({"name":"MinJie"},{$unset:{"age":''}})
复制代码
  • $inc对数字计算
db.workspace.update({name: 'list'}, {$inc: {age: -2}}) 
复制代码
  • multi: true对所有的数据插入一个健值,true,全部加,false只加一条
db.workspace.update({}, {$set: {birth: ''}}, {multi: true})
复制代码
  • upsert也有两个值:true代表没有就添加,false代表没有不添加(默认值)。
db.workspace.update({name: 'xiaoling'}, {age: 15, sex: 1}, {upsert: true})
复制代码

我就是这么一遍遍的测试的

mongoDB初识一二三

下载好的界面


以上所述就是小编给大家介绍的《mongoDB初识一二三》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

千夫所指

千夫所指

乔恩·罗森 / 王岑卉 / 九州出版社 / 2016-10-1 / CNY 42.80

编辑推荐: 《乌合之众》是为了跪舔权贵?《普通心理学》实验存在重大漏洞?《引爆点》的理论都是瞎掰的?社交网络时代《1984》预言的“老大哥”是否已经变成事实? 《纽约时报》年度十佳书 《GQ》杂志年度十佳书 《卫报》年度十佳书 《泰晤士报》年度十佳书 《经济学人》年度重推! 黑天鹅年度重点图书! 《乌合之众》是为了迎合权贵?《普通心理学》实验存在重大......一起来看看 《千夫所指》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具