Mongodb起手式

r囧r小猫 2022-06-06 01:10 204阅读 0赞

安装配置

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

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

配置

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

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

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

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

image

命令行

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

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

image

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

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

显示数据库

  1. show dbs

检查当前选择的数据库

  1. db

添加数据库

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

  1. use 数据库名

删除数据库

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

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

显示集合

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

  1. show collections

添加集合

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

  1. 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是可选,我们也可以不带配置项创建集合

  1. db.createCollection("mycollection")

删除集合

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

  1. db.集合名.drop()

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

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

查看文档

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

  1. db.集合名.find()

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

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

1.固值寻找

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

  1. 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的所有结果集

  1. db.age.find(
  2. {
  3. $and: [
  4. { "_id": 1}, { "name": "wscats"}
  5. ]
  6. }
  7. )

OR

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

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

  1. db.age.find(
  2. {
  3. $or: [
  4. { "name": "corrine"}, { name“: "wscats"}
  5. ]
  6. }
  7. )

AND和OR等结合

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

  1. db.age.find({
  2. $or: [{
  3. "title": "wscats"
  4. }, {
  5. $and: [{
  6. "title": "corrine"
  7. }, {
  8. "_id": {
  9. $lte: 5
  10. }
  11. }]
  12. }]
  13. })

插入文档

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

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

  1. db.集合名.insert(document)

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

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

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

  1. db.wscats.insert([{
  2. _id: 100,
  3. title: Hello
  4. },{
  5. _id: 101,
  6. title: World
  7. }])

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

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

更新文档

1.update()方法

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

  1. db.age.update({
  2. 'title': 'wscats'
  3. }, {
  4. $set: {
  5. 'title': 'corrine',
  6. 'age': 12
  7. }
  8. })

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

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

  1. db.age.update({
  2. 'title': 'wscats'
  3. }, {
  4. $set: {
  5. 'title': 'corrine',
  6. 'age': 12
  7. }
  8. }, {
  9. multi: true
  10. })

2.save()方法

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

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

删除文档

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

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

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

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

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

全部删除

  1. db.age.remove({ })

Limit与Skip方法

Limit

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

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

Skip

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

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

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

排序

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














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

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

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

Node.js连接

安装mongodb的模块

  1. npm install mongodb

1.连接数据库

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

2.查询数据

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

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

3.插入数据

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

  1. var MongoClient = require('mongodb').MongoClient;
  2. var DB_CONN_STR = 'mongodb://localhost:27017/wscats';
  3. MongoClient.connect(DB_CONN_STR, function(err, db) {
  4. console.log("连接成功!");
  5. db.collection("age").insert([
  6. {
  7. title: "插入的值A"
  8. }, {
  9. title: "插入的值B"
  10. }
  11. ], function(err, result) {
  12. if (err) {
  13. console.log('Error:' + err);
  14. return;
  15. }
  16. console.log(result)
  17. })
  18. });

4.更新数据

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

  1. var MongoClient = require('mongodb').MongoClient;
  2. var DB_CONN_STR = 'mongodb://localhost:27017/wscats';
  3. MongoClient.connect(DB_CONN_STR, function(err, db) {
  4. console.log("连接成功!");
  5. db.collection("age").update({
  6. "_id": 1
  7. }, {
  8. $set: {
  9. title: "你好,世界",
  10. skill: "js"
  11. }
  12. }, function(err, result) {
  13. if (err) {
  14. console.log('Error:' + err);
  15. return;
  16. }
  17. //console.log(result);
  18. });
  19. });

5.删除数据

  1. var MongoClient = require('mongodb').MongoClient;
  2. var DB_CONN_STR = 'mongodb://localhost:27017/wscats';
  3. MongoClient.connect(DB_CONN_STR, function(err, db) {
  4. console.log("连接成功!");
  5. db.collection("age").remove({
  6. "_id": 1
  7. }, function(err, result) {
  8. if (err) {
  9. console.log('Error:' + err);
  10. return;
  11. }
  12. //console.log(result);
  13. //关闭数据库
  14. db.close();
  15. });
  16. });

6.关闭数据库

  1. db.close();

参考文档

  • Wscats教程
  • 易百-MongoDB教程
  • 菜鸟-MongoDB教程

发表评论

表情:
评论列表 (有 0 条评论,204人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Mongodb

    安装配置 在mongodb官网下载最新版本的Mongodb[下载地址][Link 1] 下载msi的window安装包,可以装到C盘或者D盘目录下 配置 由于我