[关闭]
@Wangww0925 2019-08-07T08:02:11.000000Z 字数 7925 阅读 206

mongodb 操作数据库 模块

NodeJs


crud: 增(create)删(delete)改(update)查(retrieve)

更多crud操作请查看https://docs.mongodb.com/manual

引入mongodb 操作数据库模块: var mongoclient = require("mongodb").MongoClient;


连接数据库

  1. 创建数据库的连接地址
  1. var url = "mongodb://localhost:27017/数据库名";
  1. 连接数据库
  1. // MongoDB 2.x 版本的写法;db 代表当前的数据库对象
  2. mongoclient.connect(url,(err,db)=>{
  3. if(err){
  4. res.send("数据库连接失败");
  5. return
  6. }
  7. console.log("数据库连接成功", db);
  8. })
  9. // MongoDB 3.x 版本的写法;client 代表当前的数据库对象
  10. mongoclient.connect(url,(err, client)=>{
  11. if(err){
  12. res.send("数据库连接失败");
  13. return
  14. }
  15. // mongodb 3.x 以上的新写法, test是数据库名
  16. var db = client.db("test")
  17. console.log("数据库连接成功", db)
  18. })

插入数据

插入一条数据 db.collection("集合").insertOne({}, callback)

  1. db.collection("集合名").insertOne({}, (err,result)=>{
  2. if(err){
  3. res.send("插入失败");
  4. return
  5. }
  6. console.log(result)
  7. });

例子

node执行的文件

  1. var express = require("express");
  2. var mongoclient = require("mongodb").MongoClient; // 数据库引用
  3. var app = express();
  4. app.get("/",(req,res)=>{
  5. var url = "mongodb://localhost:27017/test"; //创建数据库连接地址
  6. //连接数据库
  7. mongoclient.connect(url,(err, client)=>{
  8. if(err){
  9. res.send("<h1>数据库连接失败</h1>");
  10. return;
  11. }
  12. // mongodb 3.x 以上的新写法, test是数据库名
  13. var db = client.db("test");
  14. // 插入一条数据
  15. db.collection("login").insertOne({"name": "www"}, (err,result)=>{
  16. if(err){
  17. res.send("<h1>插入失败</h1>");
  18. return;
  19. }
  20. res.send("<h1>插入成功</h1>");
  21. client.close();
  22. })
  23. })
  24. })
  25. app.listen(8081);

插入多条数据 db.collection("集合名").insertMany([{},...,{}], callback)

  1. db.collection("集合名").insertMany([{},...,{}], (err,result)=>{
  2. if(err){
  3. res.send("插入失败");
  4. return
  5. }
  6. console.log(result)
  7. });

例子

node执行的文件

  1. var express = require("express");
  2. var mongoclient = require("mongodb").MongoClient; // 数据库引用
  3. var app = express();
  4. app.get("/",(req,res)=>{
  5. var url = "mongodb://localhost:27017/test"; //创建数据库连接地址
  6. // 连接数据库
  7. mongoclient.connect(url,(err, client)=>{
  8. if(err){
  9. res.send("<h1>数据库连接失败</h1>");
  10. return;
  11. }
  12. // mongodb 3.x 以上的新写法, test是数据库名
  13. var db = client.db("test");
  14. // 插入多条数据
  15. db.collection("login").insertMany([{name:"a"},{name:"b"},{name:"c"}],(err,result)=>{
  16. if(err){
  17. res.send("<h1>插入失败</h1>");
  18. return;
  19. }
  20. res.send("<h1>插入成功</h1>");
  21. client.close();
  22. })
  23. })
  24. })
  25. app.listen(8081);

查询数据 db.collection("集合名").find(条件, callback)

  1. // doc 游标
  2. // 方法一:
  3. db.collection("集合名").find(条件,(req,doc)=>{
  4. doc.each((err,data)=>{
  5. if(err){
  6. res.send("遍历失败");
  7. return
  8. }
  9. console.log(data)
  10. })
  11. })
  12. // 方法二:
  13. var doc = db.collection("集合名").find(条件)
  14. if(doc){
  15. doc.each((err,data)=>{
  16. if(err){
  17. res.send("遍历失败");
  18. return;
  19. }
  20. console.log(data)
  21. })
  22. }

列出该集合的所有文档

PS:当查询所有数据的时候查询条件可以不写,或者写为{}

  1. var express = require("express");
  2. var mongoclient = require("mongodb").MongoClient; // 数据库引用
  3. var app = express();
  4. app.get("/",(req,res)=>{
  5. var url = "mongodb://localhost:27017/test"; //创建数据库连接地址
  6. // 连接数据库
  7. mongoclient.connect(url,(err, client)=>{
  8. if(err){
  9. res.send("<h1>数据库连接失败</h1>");
  10. return;
  11. }
  12. // mongodb 3.x 以上的新写法, test是数据库名
  13. var db = client.db("test");
  14. var result = [];
  15. // 列出该集合的所有文档
  16. db.collection("login").find({},(err,doc)=>{
  17. doc.each(function(err,data){
  18. if(err){
  19. res.send("<h1>遍历失败</h1>")
  20. return;
  21. }
  22. if(data != null){
  23. result.push(data);
  24. }else{
  25. res.send(result);
  26. client.close();
  27. }
  28. })
  29. })
  30. })
  31. })
  32. app.listen(8081);

精确匹配

  1. var express = require("express");
  2. var mongoclient = require("mongodb").MongoClient; // 数据库引用
  3. var app = express();
  4. app.get("/",(req,res)=>{
  5. var url = "mongodb://localhost:27017/test"; //创建数据库连接地址
  6. // 连接数据库
  7. mongoclient.connect(url,(err, client)=>{
  8. if(err){
  9. res.send("<h1>数据库连接失败</h1>");
  10. return;
  11. }
  12. // mongodb 3.x 以上的新写法, test是数据库名
  13. var db = client.db("test");
  14. var result = [];
  15. // 精确匹配
  16. db.collection("login").find({name: "www"},(err,doc)=>{
  17. doc.each(function(err,data){
  18. if(err){
  19. res.send("<h1>遍历失败</h1>")
  20. return;
  21. }
  22. if(data != null){
  23. // console.log(typeof data);
  24. result.push(data);
  25. }else{
  26. res.send(result);
  27. client.close();
  28. }
  29. })
  30. })
  31. })
  32. })
  33. app.listen(8081);

条件判断查询

  1. var express = require("express");
  2. var mongoclient = require("mongodb").MongoClient; // 数据库引用
  3. var app = express();
  4. app.get("/",(req,res)=>{
  5. var url = "mongodb://localhost:27017/test"; //创建数据库连接地址
  6. // 连接数据库
  7. mongoclient.connect(url, (err, client)=>{
  8. if(err){
  9. res.send("<h1>数据库连接失败</h1>");
  10. return;
  11. }
  12. // mongodb 3.x 以上的新写法, test是数据库名
  13. var db = client.db("test");
  14. var result = [];
  15. // 方法一:
  16. db.collection("login").find({"age":{$gt: 50}}, (err,doc)=>{
  17. doc.each(function(err,data){
  18. if(err){
  19. res.send("<h1>遍历失败</h1>")
  20. return;
  21. }
  22. if(data != null){
  23. // console.log(typeof data);
  24. result.push(data);
  25. }else{
  26. res.send(result);
  27. client.close();
  28. }
  29. })
  30. })
  31. // 方法二:
  32. // var doc = db.collection("login").find({"age":{$gt: 25}});
  33. // if(doc){
  34. // doc.each((err,data)=>{
  35. // if(err){
  36. // res.send("<h1>遍历失败</h1>");
  37. // return;
  38. // }
  39. // if(data != null){
  40. // result.push(data);
  41. // }else{
  42. // res.send(result);
  43. // client.close()
  44. // }
  45. // })
  46. // }
  47. })
  48. })
  49. app.listen(8081);

查询并排序 db.collection("集合名").find().sort(obj);


修改数据 db.collection("集合名").update(find_obj, new_obj, callback);

  1. db.collection("集合名").update(find_obj, new_obj, function(err,result){
  2. if(err){
  3. res.send("<h1>修改失败</h1>");
  4. return;
  5. }
  6. console.log("修改成功");
  7. })

更改所有匹配项目

PS: 如果不指定修改多条数据{multi: true},则只修改第一条数据

  1. var express = require("express");
  2. var mongoclient = require("mongodb").MongoClient; // 数据库引用
  3. var app = express();
  4. app.get("/",(req,res)=>{
  5. var url = "mongodb://localhost:27017/test"; //创建数据库连接地址
  6. // 连接数据库
  7. mongoclient.connect(url,(err, client)=>{
  8. if(err){
  9. res.send("<h1>数据库连接失败</h1>");
  10. return;
  11. }
  12. // mongodb 3.x 以上的新写法, test是数据库名
  13. var db = client.db("test");
  14. // 更改所有匹配项目
  15. // 只修改一条数据
  16. db.collection("login").update({"name":"c"},{$set:{"age": 10}}, function(err,result){
  17. if(err){
  18. res.send("<h1>修改失败</h1>");
  19. return;
  20. }
  21. res.send("修改成功");
  22. client.close();
  23. })
  24. // 修改全部
  25. // db.collection("login").update({"name":"c"},{$set:{"age": 80}}, {"multi":true},function(err,result){
  26. // if(err){
  27. // res.send("<h1>修改失败</h1>");
  28. // return;
  29. // }
  30. // res.send("修改成功");
  31. // client.close();
  32. // })
  33. })
  34. })
  35. app.listen(8081);

完整替换,不出现$set关键字了

  1. var express = require("express");
  2. var mongoclient = require("mongodb").MongoClient; // 数据库引用
  3. var app = express();
  4. app.get("/",(req,res)=>{
  5. var url = "mongodb://localhost:27017/test"; //创建数据库连接地址
  6. // 连接数据库
  7. mongoclient.connect(url,(err, client)=>{
  8. if(err){
  9. res.send("<h1>数据库连接失败</h1>");
  10. return;
  11. }
  12. // mongodb 3.x 以上的新写法, test是数据库名
  13. var db = client.db("test");
  14. // 完整替换,不出现$set关键字了
  15. db.collection("login").update({"name":"c"},{"age": 10}, function(err,result){
  16. if(err){
  17. res.send("<h1>修改失败</h1>");
  18. return;
  19. }
  20. res.send("修改成功");
  21. client.close();
  22. })
  23. })
  24. })
  25. app.listen(8081);

删除数据 db.collection("集合名").remove(obj, callback);

  1. db.collection("集合名").remove(obj, function(err,result){
  2. if(err){
  3. res.send("删除失败");
  4. return;
  5. }
  6. if(result.result.n <= 0){
  7. res.send("<h1>删除失败</h1>");
  8. return;
  9. }
  10. console.log(result)
  11. })

只要匹配成功,就会删除

  1. var express = require("express");
  2. var mongoclient = require("mongodb").MongoClient; // 数据库引用
  3. var app = express();
  4. app.get("/",(req,res)=>{
  5. var url = "mongodb://localhost:27017/test"; //创建数据库连接地址
  6. // 连接数据库
  7. mongoclient.connect(url,(err, client)=>{
  8. if(err){
  9. res.send("<h1>数据库连接失败</h1>");
  10. return;
  11. }
  12. // mongodb 3.x 以上的新写法, test是数据库名
  13. var db = client.db("test");
  14. // 只要匹配成功,就会删除
  15. db.collection("login").remove({name: "a"},function(err,result){
  16. if(err){
  17. res.send("删除失败");
  18. return;
  19. }
  20. // console.log(result)
  21. if(result.result.n <= 0){
  22. res.send("<h1>删除失败</h1>");
  23. return;
  24. }
  25. res.send("<h1>删除成功</h1>");
  26. client.close();
  27. })
  28. })
  29. })
  30. app.listen(8081);

删除全部

  1. var express = require("express");
  2. var mongoclient = require("mongodb").MongoClient; // 数据库引用
  3. var app = express();
  4. app.get("/",(req,res)=>{
  5. var url = "mongodb://localhost:27017/test"; //创建数据库连接地址
  6. // 连接数据库
  7. mongoclient.connect(url,(err, client)=>{
  8. if(err){
  9. res.send("<h1>数据库连接失败</h1>");
  10. return;
  11. }
  12. // mongodb 3.x 以上的新写法, test是数据库名
  13. var db = client.db("test");
  14. // 删除全部
  15. db.collection("login").remove({},function(err,result){
  16. if(err){
  17. res.send("删除失败");
  18. return;
  19. }
  20. if(result.result.n <= 0){
  21. res.send("<h1>删除失败</h1>");
  22. return;
  23. }
  24. res.send("<h1>删除成功</h1>");
  25. client.close();
  26. })
  27. })
  28. })
  29. app.listen(8081);

计算集合中文档中数量 db.collection("集合名").count().then(function(count){})

分页,从哪里开始查找数据 db.collection("集合名").find().skip(位置)

限制选取的条数 db.collection("集合名").find().limit(长度);

从哪里开始查找几条数据 db.collection("集合名").find().skip(位置).limit(长度);


作者 wendy
2019 年 2月 1日

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注