NodeJS+Express+MongoDB - 张果 - 博客园

db.products.insert({name:“iphone”,price:1988});

从上图操作可以看出,没有去创建“products”集合,其实通过插入操作也会自动创建

_id,是mongodb自已生成的,每行数据都会存在,默认是ObjectId,可以在插入数据时插入这个键的值(支持mongodb支持的所有数据类型)

查看数据:db.getCollection(‘products’).find({})

b)、db.表名.save(数据);

db.products.save({_id:2,name:“HuWei P9”,price:2988});

_id可以自已插入、一个表中不一定要字段都相同,虽然insert和save方法都可以插入数据,当默认的“_id”值已存在时,调用insert方法插入会报错;而save方法不会,会更新相同的_id所在行数据的信息。

c)、批量添加

mongodb的shell中可以使用javascript脚本,如

for(var i=0;i<5;i++)db.users.save({‘_id’:i,‘name’:‘zhangguo’+i,‘age’:i+8});

1.2.4、查询数据

a)、查询集合中所有数据:db.集合.find();

db.users.find({name:‘zhangguo0’});

b)、按条件查询(支持多条件):db.集合.find(条件);

db.users.find({name:‘zhangguo0’,age:9});

对象中的条件要求同时成立

c)、查询第一条(支持条件):db.集合.findOne(条件);

d)、限制数量:db.集合.find().limit(数量);

e)、跳过指定数量:db.表名.find().skip(数量);

f)、比较查询

大于:小于:gt小于:lt

大于等于:小于等于:gte小于等于:lte

非等于:$ne

db.users.find({age:{‘$gt’:9}});

查找年龄大于9且小于11岁的

db.users.find({age:{‘gt′:9,′lt’:11}});

g)、查询数量:db.表名.find().count();

h)、排序:db.表名.find().sort({“字段名”:1});

1:表示升序,-1:表示降序

i)、指定字段返回: db.表名.find({},{“字段名”:0});  参数1:返回 0:不返回

1.2.5、修改

前面save在_id字段已存在是就是修改操作,按指定条件修改语法如下:

db.集合.update({“条件字段名”:“字段值”},{$set:{“要修改的字段名”:“修改后的字段值”}});

db.users.update({age:{'KaTeX parse error: Expected 'EOF', got '}' at position 6: eq':9}̲},{set:{age:100}});

修改多条:

db.users.updateMany({age:{"KaTeX parse error: Expected 'EOF', got '}' at position 8: gte":10}̲},{set:{age:30}});

1.2.6、删除

db.集合.remove(条件);

db.users.remove({age:{‘$gte’:10}});  删除年龄>=10岁的数据

二、NodeJS访问MongoDB

=================

MongoDB对许多平台都提供驱动可以访问数据库,如C#、Java、Node.js等。这里以Node.js为例。

2.1、安装MongoDB访问驱动


使用包管理器,在命令行执行如下指令:

全局安装驱动

npm install mongodb -g

在当前项目中引入mongodb

npm install mongodb --save

这样添加驱动就成功了。

2.2、添加数据


在项目的根目录下新建一个db.js文件,使用Node.js操作MongoDB。

示例代码:

复制代码

//引入mongodb模块,获得客户端对象

var MongoClient = require(‘mongodb’).MongoClient;

//连接字符串

var DB_CONN_STR = ‘mongodb://localhost:27017/gomall’;

//定义函数表达式,用于操作数据库并返回结果

var insertData = function(db, callback) {

//获得指定的集合

var collection = db.collection(‘users’);

//插入数据

var data = [{_id:7,“name”:‘rose’,“age”:21},{_id:8,“name”:‘mark’,“age”:22}];

collection.insert(data, function(err, result) {

//如果存在错误

if(err)

{

console.log(‘Error:’+ err);

return;

}

//调用传入的回调方法,将操作结果返回

callback(result);

});

}

//使用客户端连接数据,并指定完成时的回调方法

MongoClient.connect(DB_CONN_STR, function(err, db) {

console.log(“连接成功!”);

//执行插入数据操作,调用自定义方法

insertData(db, function(result) {

//显示结果

console.log(result);

//关闭数据库

db.close();

});

});

复制代码

运行结果:

复制代码

连接成功!

{ result: { ok: 1, n: 2 },

ops:

[ { _id: 7, name: ‘rose’, age: 21 },

{ _id: 8, name: ‘mark’, age: 22 } ],

insertedCount: 2,

insertedIds: [ 7, 8 ] }

复制代码

2.3、修改数据


示例代码:

复制代码

//引入mongodb模块,获得客户端对象

var MongoClient = require(‘mongodb’).MongoClient;

//连接字符串

var DB_CONN_STR = ‘mongodb://localhost:27017/gomall’;

//定义函数表达式,用于操作数据库并返回结果

var updateData = function(db, callback) {

//获得指定的集合

var collection = db.collection(‘users’);

//要修改数据的条件,>=10岁的用户

var where={age:{“$gte”:10}};

//要修改的结果

var set={$set:{age:95}};

collection.updateMany(where,set, function(err, result) {

//如果存在错误

if(err)

{

console.log(‘Error:’+ err);

return;

}

//调用传入的回调方法,将操作结果返回

callback(result);

});

}

//使用客户端连接数据,并指定完成时的回调方法

MongoClient.connect(DB_CONN_STR, function(err, db) {

console.log(“连接成功!”);

//执行插入数据操作,调用自定义方法

updateData(db, function(result) {

//显示结果

console.log(result);

//关闭数据库

db.close();

});

});

复制代码

运行结果:

连接成功!

{ result: { n: 5, nModified: 5, ok: 1 }

2.4、查询数据


示例代码:

复制代码

//引入mongodb模块,获得客户端对象

var MongoClient = require(‘mongodb’).MongoClient;

//连接字符串

var DB_CONN_STR = ‘mongodb://localhost:27017/gomall’;

//定义函数表达式,用于操作数据库并返回结果

var findData = function(db, callback) {

//获得指定的集合

var collection = db.collection(‘users’);

//要查询数据的条件,<=10岁的用户

var where={age:{“$lte”:10}};

//要显示的字段

var set={name:1,age:1};

collection.find(where,set).toArray(function(err, result) {

//如果存在错误

if(err)

{

console.log(‘Error:’+ err);

return;

}

//调用传入的回调方法,将操作结果返回

callback(result);

});

}

//使用客户端连接数据,并指定完成时的回调方法

MongoClient.connect(DB_CONN_STR, function(err, db) {

console.log(“连接成功!”);

//执行插入数据操作,调用自定义方法

findData(db, function(result) {

//显示结果

console.log(result);

//关闭数据库

db.close();

});

});

复制代码

运行结果:

连接成功!

[ { _id: 0, name: ‘zhangguo0’, age: 8 },

{ _id: 1, name: ‘zhangguo1’, age: 9 } ]

2.5、删除数据


示例代码:

复制代码

//引入mongodb模块,获得客户端对象

var MongoClient = require(‘mongodb’).MongoClient;

//连接字符串

var DB_CONN_STR = ‘mongodb://localhost:27017/gomall’;

//定义函数表达式,用于操作数据库并返回结果

var findData = function(db, callback) {

//获得指定的集合

var collection = db.collection(‘users’);

//要删除数据的条件,_id>2的用户删除

var where={_id:{“$gt”:2}};

collection.remove(where,function(err, result) {

//如果存在错误

if(err)

{

console.log(‘Error:’+ err);

return;

}

//调用传入的回调方法,将操作结果返回

callback(result);

});

}

//使用客户端连接数据,并指定完成时的回调方法

MongoClient.connect(DB_CONN_STR, function(err, db) {

console.log(“连接成功!”);

//执行插入数据操作,调用自定义方法

findData(db, function(result) {

//显示结果

console.log(result);

//关闭数据库

db.close();

});

});

复制代码

运行结果:

连接成功!

{ result: { n: 4, ok: 1 },

三、NodeJS+Express+MongoDB示例

==========================


自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)


核心竞争力,怎么才能提高呢?

成年人想要改变生活,逆转状态?那就开始学习吧~

万事开头难,但是程序员这一条路坚持几年后发展空间还是非常大的,一切重在坚持。

为了帮助大家更好更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。

前端面试题汇总

JavaScript

性能

linux

前端资料汇总

完整版PDF资料免费分享,只需你点赞支持,动动手指点击此处就可免费领取了

前端工程师岗位缺口一直很大,符合岗位要求的人越来越少,所以学习前端的小伙伴要注意了,一定要把技能学到扎实,做有含金量的项目,这样在找工作的时候无论遇到什么情况,问题都不会大。

_convert/621960a57eb42479e02d6d64c0c81891.png)

前端面试题汇总

JavaScript

性能

linux

前端资料汇总

完整版PDF资料免费分享,只需你点赞支持,动动手指点击此处就可免费领取了

前端工程师岗位缺口一直很大,符合岗位要求的人越来越少,所以学习前端的小伙伴要注意了,一定要把技能学到扎实,做有含金量的项目,这样在找工作的时候无论遇到什么情况,问题都不会大。

  • 15
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值