MongoDB——增删改查接口实践

学习了一下mongodb数据库的指令,然后发现,啊,nodejs下操作数据库蛮有趣啊~

然后,就把所有的API都敲了一下,满足下自己的好奇心。

本地搭建数据库及环境

安装

Windows下安装MongoDB可以去官网填写表单然后下载对应的版本即可,当然,嫌麻烦的话,直接复制一下的地址去下载安装就好了(没错,我就是这么懒):

64位系统:
https://downloads.mongodb.com/win32/mongodb-win32-x86_64-enterprise-windows-64-3.4.7-signed.msi

然后,自行安装呀!

配置

在MongoDB安装路径(D:\Program Files\MongoDB\Server\3.4\)下新建文件mongod.cfg:

systemLog:
  destination: file
  path: E:\Tronsis\mongodb\log\mongod.log
storage:
  dbPath: E:\Tronsis\mongodb\db
net:
  bindIp: 127.0.0.1
  port: 27017  

启动MongoDB Server,在cmd运行:

sc.exe create MongoDB binPath= "\"D:\Program Files\MongoDB\Server\3.4\bin\mongod.exe\" --service --config=\"D:\Program Files\MongoDB\Server\3.4\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"

当创建服务成功后,终端显示:CreateService SUCCESS

启停命令:net start MongoDBnet stop MongoDBsc.exe delete MongoDB

windows系统下管理数据库

Windows系统下用命令行管理数据库,怎么都觉得别扭,于是,我们要用一款叫做ROBO 3T的可视化工具来管理我们的MongoDB。

下载安装即可:Robo 3T,第二个是绿色版本,自行选择就可以了。

MongoDB数据库API

无论什么数据库,都逃不了这四大件,MongoDB即使是非关系型数据库,也离不开这几大要素,下面就一起来看看这些API吧~

涉及的API有:

connect() 连接数据库,当对应数据库不存在时,MDB会自动创建数据库并连接
createCollection() 新建数据表
insertOne() 插入单条数据
insertMany() 插入多条数据

涉及的API:

deleteOne() 删除符合条件的一个数据
deleteMany() 删除符合条件的多个数据
db.collection(string).drop() 删除数据表:当返回到的res为true,数据表即被成功删除
db.dropCollection(string) 删除数据表

涉及的API:

updateOne(query,newVal) 更新符合条件的首个数据。注意:newVal 应包含数据的所有自定义变量,否则未传入的变量也会引起数据表单元的变化–未传入的变量会被置空
updateOne(query,{ $set: newVal }) 声明更新指定的字段,同时未传入的字段保持不变
updateMany(query,{ $set: newVal }) 更新符合条件的所有数据,注意加上$set

涉及的API:

findOne() 搜索符合条件的第一条信息,传入参数类型为Object
find().toArray() 搜索符合条件的所有信息并组建为数组返回
find(query,arguments) query:查询条件(Object),arguments: 返回字段(Object)(字段值设置为true则返回该字段)
find().sort(Object) 对搜索结果进行排序,传入值1则按照对应字段升序排序,否则降序
find().limit(Number) 限制返回结果的个数
find().skip(n).limit(Number) 跳过搜索结果的前n条,

skip+limit组合一般用于实现分页数据,适用于小数据量,数据量大时查询性能很差…很差…
非常不建议使用skip来进行数据分页。

关联

因为MDB的非关系型特质,当我们需要建立两张表的信息关联时,需要用到特殊的接口aggregate

仅有一个API:

aggregate([{
   $lookup: {
       from: string, 
       /* 另一张数据表名,用于被关联获取相关信息,如:members */
       localField: string, 
       /* 当前数据表posts中用于关联的key,如 author_id */
       foreignField: string, 
       /* 被关联表与author_id对应的key,如 _id */
       as: string  
       /* 从members表中获取的相关信息,插入到当前表查询结果,存到的对应key,比如: author_info */
   }
}],callback)

一些要注意的问题

当删除mongodb的数据表时,若当前被删数据表为当前数据库中的唯一一张表,则删除了数据表之后,所在的数据库也会被删除。

Mongodb建议以_id作为主键进行查询、修改、删除、关联操作,因为这个主键极少情况会被影响或修改。

具体的代码片段演示在github:https://github.com/nooldey/mongodb-learning

NOOLDEY

本文作者:NOOLDEY

做一个诗情画意的码农,皮皮猪,我们走!

原文链接: http://zhuweisheng.com.cn/tech/mongodb-api/

本站文章如无特殊声明均为原创,创作不易,转载请注明来源,谢谢!