Mongodb入门教程

来源:互联网 发布:移动端js拼图游戏 编辑:程序博客网 时间:2024/06/05 21:12

安装配置

在mongodb官网下载最新版本的Mongodb下载地址

下载msi的window安装包,可以装到C盘或者D盘目录下

配置

由于我是安装在D盘的环境下

D:\Program Files (x86)\MongoDB\Server\3.2\bin

所以在bin文件夹下找到mongod.exe命令,然后通过管理员执行mongod --dbpath x路径x,路径可以是任何地方,我这里选择在D盘的MongoDB目录下,当然路径不要包含特殊的字符串,比如Program Files (x86)也不行

mongod --dbpath D:\mongodb\data\db

image

命令行

经过上面的配置之后,就可以返回bin目录下找到mongo.exe命令,并管理员下执行,就可以出现mongodb的命令行模式

D:\Program Files (x86)\MongoDB\Server\3.2\bin

image

然后就可以使用下面的命令来测试了

db.help()//帮助db.stats()//统计

显示数据库

show dbs

检查当前选择的数据库

db

添加数据库

数据库名为数据库创建的名字,使用该命令后会默认切换到对应的数据库,并且在数据库中添加选项,数据库信息才显示,如果默认就有该数据库,那就是切换到对应的数据库里面

use 数据库名

删除数据库

先切换到对应的数据库,然后再执行db.dropDatabase()删除该数据库

use 数据库名//switched to db 数据库名db.dropDatabase()

显示集合

用一下命令可以检查创建的集合

show collections

添加集合

在创建完数据库之后,我们就可以创建集合

db.createCollection(集合名字name,设置参数options[对象类型])

name是要创建的集合的名称。 options是一个文档,用于指定集合的配置

参数 类型 描述 name String 要创建的集合的名称 options Document (可选)指定有关内存大小和索引的选项

options参数是可选的,因此只需要指定集合的名称。 以下是可以使用的选项列表:

字段 类型 描述 capped Boolean (可选)如果为true,则启用封闭的集合。上限集合是固定大小的集合,它在达到其最大大小时自动覆盖其最旧的条目。 如果指定true,则还需要指定size参数。 autoIndexId Boolean (可选)如果为true,则在_id字段上自动创建索引。默认值为false。 size 数字 (可选)指定上限集合的最大大小(以字节为单位)。 如果capped为true,那么还需要指定此字段的值。 max 数字 (可选)指定上限集合中允许的最大文档数。

由于option是可选,我们也可以不带配置项创建集合

db.createCollection("mycollection")

删除集合

db.collection.drop()用于从数据库中删除集合

db.集合名.drop()

比如我们可以测试以下操作

db.createCollection("wscats")//创建名为wscats的集合show collections//显示该数据库所有集合   wscatsdb.wscats.drop()//删除名为wscats的集合

查看文档

最简单查看文档的方法就是find(),会检索集合中所有的文档结果

db.集合名.find()

要以格式化的方式显示结果,可以使用pretty()方法。

db.集合名.find().pretty()

1.固值寻找

寻找age集合里面所有含有属性值为wscats的文档结果,相当于where name = 'wscats'

db.age.find({name:"wscats"})

2.范值寻找

操作 语法 示例 等效语句 相等 {:} db.age.find({"name":"wscats"}).pretty() where name = ‘wscats’ 小于 {:{$lt:}} db.age.find({"likes":{$lt:50}}).pretty() where likes < 50 小于等于 {:{$lte:}} db.age.find({"likes":{$lte:50}}).pretty() where likes <= 50 大于 {:{$gt:}} db.age.find({"likes":{$gt:50}}).pretty() where likes > 50 大于等于 {:{$gte:}} db.age.find({"likes":{$gte:50}}).pretty() where likes >= 50 不等于 {:{$ne:}} db.age.find({"likes":{$ne:50}}).pretty() where likes != 50

3.AND和OR寻找

AND

在find()方法中,如果通过使用将它们分开传递多个键,则mongodb将其视为AND条件。 以下是AND的基本语法

寻找_id为1并且name为wscats的所有结果集

db.age.find(   {      $and: [         {"_id": 1}, {"name": "wscats"}      ]   })

OR

在要根据OR条件查询文档,需要使用$or关键字。以下是OR条件的基本语法

寻找name为corrine或者name为wscats的所有结果集

db.age.find(   {      $or: [         {"name": "corrine"}, {“name“: "wscats"}      ]   })

AND和OR等结合

相当于语句where title = "wscats" OR ( title = "corrine" AND _id < 5)

db.age.find({  $or: [{    "title": "wscats"  }, {    $and: [{      "title": "corrine"    }, {      "_id": {        $lte: 5      }    }]  }]})

插入文档

文档的数据结构和JSON基本一样。
所有存储在集合中的数据都是BSON格式。
BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON

要将数据插入到mongodb集合中,需要使用mongodb的insert()save()方法。

db.集合名.insert(document)

比如我们可以插入以下数据

db.wscats.insert({   _id: 100,   title: 'MongoDB Tutorials',    description: 'node_tutorials',   by: 'Oaoafly',   url: 'https://github.com/Wscats/node-tutorial',   tags: ['wscat','MongoDB', 'database', 'NoSQL','node'],   num: 100,})

也可以支持插入多个,注意传入的是数组形式

db.wscats.insert([{   _id: 100,   title: ‘Hello’},{   _id: 101,   title: ‘World’}])

在插入的文档中,如果不指定_id参数,那么mongodb会为此文档分配一个唯一的ObjectId
要插入文档,也可以使用db.post.save(document)。如果不在文档中指定_id,那么save()方法将与insert()方法一样自动分配ID的值。如果指定_id,则将以save()方法的形式替换包含_id的文档的全部数据。

db.wscats.save({   _id: 111,   title: 'Oaoafly Wscats', })

更新文档

1.update()方法

寻找第一条title为wscats的值,并且更新值title为corrine和age为12

db.age.update({  'title': 'wscats'}, {  $set: {    'title': 'corrine',    'age': 12  }})

默认情况下,mongodb只会更新一个文档。要更新多个文档,需要将参数multi设置为true,还可以配合find方法里面的各种复杂条件判断来筛选结果,然后更新多个文档

寻找所有title为wscats的值,并且更新值title为corrine和age为12

db.age.update({  'title': 'wscats'}, {  $set: {    'title': 'corrine',    'age': 12  }}, {  multi: true})

2.save()方法

_id主键为3的文档,覆盖新的值,注意_id为必传

db.age.save({  '_id':3,  'title': 'wscats'})

删除文档

删除主键_id为3的文档,默认是删除多条

db.age.remove({  '_id':3})

建议在执行remove()函数前先执行find()命令来判断执行的条件是否正确

如果你只想删除第一条找到的记录可以设置justOne为1,如下所示

db.age.remove({...},1)

全部删除

db.age.remove({})

Limit与Skip方法

Limit

如果你需要在mongodb中读取指定数量的数据记录,可以使用mongodb的Limit方法,limit()方法接受一个数字参数,该参数指定从mongodb中读取的记录条数。

db.age.find().limit(数量)

Skip

我们除了可以使用limit()方法来读取指定数量的数据外,还可以使用skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。

db.age.find().limit(数量).skip(数量)//skip()方法默认值为0

所以我们在实现分页的时候就可以用limit来限制每页多少条数据(一般固定一个值),用skip来决定显示第几页(一个有规律变动的值)

排序

在mongodb中使用使用sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用1和-1来指定排序的方式,其中1为升序排列,而-1是用于降序排列。

1 升序排列 -1 降序排列
db.集合名.find().sort({键值(属性值):1})

age集合表重新根据_id主键进行降序排列

db.age.find().sort({  "_id": -1})

Node.js连接

安装mongodb的模块

npm install mongodb

1.连接数据库

var MongoClient = require('mongodb').MongoClient;//结尾是选择数据库名var DB_CONN_STR = 'mongodb://localhost:27017/wscats';MongoClient.connect(DB_CONN_STR, function(err, db) {  console.log("连接成功!");});

2.查询数据

注意查询回来的结果需要toArray来遍历处理

var MongoClient = require('mongodb').MongoClient;var DB_CONN_STR = 'mongodb://localhost:27017/wscats';MongoClient.connect(DB_CONN_STR, function(err, db) {  console.log("连接成功!");  //选中age集合,并用find方法把结果集拿回来进行处理  db.collection("age").find({title: "cba"}).toArray(function(err, result) {    if (err) {      console.log('Error:' + err);      return;    }    console.log(result);  });});

3.插入数据

insert函数第一个参数是需要插入的值(可以一个也可以多个),第二个参数是接受一个回调函数,当值插入成功后回返回插入值得一些关键信息,比如_id

var MongoClient = require('mongodb').MongoClient;var DB_CONN_STR = 'mongodb://localhost:27017/wscats';MongoClient.connect(DB_CONN_STR, function(err, db) {  console.log("连接成功!");  db.collection("age").insert([    {      title: "插入的值A"    }, {      title: "插入的值B"    }  ], function(err, result) {    if (err) {      console.log('Error:' + err);      return;    }    console.log(result)  })});

4.更新数据

注意如果不加set就是完全替换原来的那份(没有设置的属性值将会丢失),加上set则只是更新对应的属性值,其余不做改变

var MongoClient = require('mongodb').MongoClient;var DB_CONN_STR = 'mongodb://localhost:27017/wscats';MongoClient.connect(DB_CONN_STR, function(err, db) {  console.log("连接成功!");  db.collection("age").update({    "_id": 1  }, {    $set: {      title: "你好,世界",      skill: "js"    }  }, function(err, result) {    if (err) {      console.log('Error:' + err);      return;    }    //console.log(result);  });});

5.删除数据

var MongoClient = require('mongodb').MongoClient;var DB_CONN_STR = 'mongodb://localhost:27017/wscats';MongoClient.connect(DB_CONN_STR, function(err, db) {  console.log("连接成功!");  db.collection("age").remove({    "_id": 1  }, function(err, result) {    if (err) {      console.log('Error:' + err);      return;    }    //console.log(result);    //关闭数据库    db.close();  });});

6.关闭数据库

db.close();

参考文档

  • Wscats教程
  • 易百-MongoDB教程
  • 菜鸟-MongoDB教程
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 qq安装包失效怎么办 华为手机相片多怎么办? 违章照片看不了怎么办 被造谣毁名誉怎么办 眼睛得了麦粒疹怎么办 公告牌证作废怎么办 宝宝吃了护臀膏怎么办 八字五行同类强怎么办? 重装系统出现两个系统盘怎么办 看视频手机发烫怎么办 dhcp获取ip失败怎么办 苹果笔记本打不出数字怎么办 系统盘读不出来怎么办 waifai密码忘了怎么办 window xp忘记密码怎么办 winxp密码忘了怎么办 xp电脑密码忘记怎么办 xp桌面图标有阴影怎么办 联想电脑忘记登录密码怎么办 xp系统忘掉密码怎么办 xp密码忘记了怎么办 电脑忘记开机密码怎么办 注销了win7用户名怎么办 xp启动后黑屏怎么办 开机要按esc怎么办 excel产品激活失败怎么办 米粉卡激活失败怎么办 电脑死机ppt保存怎么办 电脑装系统黑屏怎么办 电脑c盘无法访问怎么办 d盘变成ntfs怎么办 系统重装卡住了怎么办 系统关机没反应怎么办 232串口打开失败怎么办 逆水寒cpu不支持怎么办 显卡被禁用了怎么办 vmvare注册错了怎么办 电脑主机未成功启动怎么办 主机未成功启动怎么办 电脑主机未能成功启动怎么办 虚拟机没有自带怎么办