当前位置: 首页 > news >正文

nodejs mongodb基础

mongodb 下载地址: https://www.mongodb.com/try/download/community
mongodb 是一个bson (类似与json格式)的nosql 数据库,没有严格的数据表格式,松散的
安装过程省略(windows一路下一步就行)
创建一个文件加 D:\mongodb\data\db 用于保存数据
找到mongodb 和 mongosh 的安装路径 找到对应的bin 目录,在环境变量中将两个bin 目录拷贝到环境变量的path 项中
windows 启动本地mongodb 服务
mongod --dbpath D:\mongodb\data\db

开启另外一个终端
https://www.mongodb.com/try/download/shell 客户端的下载地址
mongosh 本地启动客户端

mongosh --host :
use student; 切换创建数据库,需要插入数据之后才会正式创建
db.student.insertOne({“id”:1,“name”:“lihao1”,“age”:20,“salary”:18000.0,“address”:“北京”}); //插入一条数据
db.student.insertOne({“id”:2,“name”:“lihao2”,“age”:20,“salary”:18000.0,“address”:“北京”});
db.student.insertOne({“id”:3,“name”:“lihao3”,“age”:20,“salary”:18000.0,“address”:“北京”});
db.student.insertOne({“id”:4,“name”:“lihao4”,“age”:20,“salary”:18000.0,“address”:“北京”});
db.student.insertOne({“id”:5,“name”:“lihao5”,“age”:20,“salary”:18000.0,“address”:“北京”});
db.student.insertOne({“id”:6,“name”:“lihao6”,“age”:20,“salary”:18000.0,“address”:“北京”});
db.student.insertOne({“id”:7,“name”:“lihao7”,“age”:20,“salary”:18000.0,“address”:“北京”});
db.student.insertOne({“id”:8,“name”:“lihao8”,“age”:20,“salary”:18000.0,“address”:“北京”});
db.student.insertOne({“id”:9,“name”:“lihao9”,“age”:20,“salary”:18000.0,“address”:“北京”});

db.student.insertOne({“id”:10,“name”:“lihao10”,“age”:20,“salary”:18000.0,“address”:“北京”});
db.student.insertOne({“id”:11,“name”:“lihao11”,“age”:20,“salary”:18000.0,“address”:“北京”});
db.student.insertOne({“id”:12,“name”:“lihao12”,“age”:20,“salary”:18000.0,“address”:“北京”});
db.student.insertOne({“id”:13,“name”:“lihao13”,“age”:20,“salary”:18000.0,“address”:“北京”});
db.student.insertOne({“id”:14,“name”:“lihao14”,“age”:20,“salary”:18000.0,“address”:“北京”});
db.student.insertOne({“id”:15,“name”:“lihao15”,“age”:20,“salary”:18000.0,“address”:“北京”});
db.student.insertOne({“id”:16,“name”:“lihao16”,“age”:20,“salary”:18000.0,“address”:“北京”});
db.student.insertOne({“id”:17,“name”:“lihao17”,“age”:20,“salary”:18000.0,“address”:“北京”});
db.student.insertOne({“id”:18,“name”:“lihao18”,“age”:20,“salary”:18000.0,“address”:“北京”});

db.student.find(); //查询所有数据
db.student.find().pretty(); pretty()表示美化json 之后输出
db.student.findOne({ _id: ObjectId(‘68a56375e4c2397482eec4a9’) }); 根据_id查询 返回所有字段
db.student.find({ id: 1 }) 根据id 查询 返回所有字段

返回指定的字段
db.student.find({_id: ObjectId(“68a56375e4c2397482eec4a9”)}, {name: 1, age: 1, _id: 0});
name: 1 表示包括name字段。
age: 1 表示包括age字段。
_id: 0 表示不包括_id字段。如果你想要包含_id字段,可以设置为_id: 1

db.student.countDocuments({}); 计算记录条数
db.student.count({}); 新版本已经开始弃用了

student> db.student.count({});
DeprecationWarning: Collection.count() is deprecated. Use countDocuments or estimatedDocumentCount.
18

根据条件聚合查询:
db.student.aggregate([
{ $match: { “salary”:18000 } },
{ $count: “total” }
]);

//单个记录修改
db.student.updateOne(
{ _id: ObjectId(“68a56375e4c2397482eec4a9”) },
{ $set: { “salary”: 1500 } }
);

db.student.updateOne(
{ _id: ObjectId(‘68a5690fe4c2397482eec4ba’) },
{ $set: { “salary”: 1000 } }
);
db.student.findOne({ _id: ObjectId(‘68a5690fe4c2397482eec4ba’) });
db.student.findOne({ _id: ObjectId(‘68a56375e4c2397482eec4a9’) });

MongoDB 中可以使用的类型如下表所示:

mongodb 的数据类型
Double
String
Object
Array
Binary
Undefined
Object
Boolean
Date
Null
RegularExpression
JavaScript
Symbol
JavaScript
32-bit integer
Timestamp
64-bit integer
Min key
Max key

关系运算符
大于(gt)、小于(gt)、小于(gt)、小于(lt)、大于等于(gte)、小于等于(gte)、小于等于(gte)、小于等于(lte)、不等于($ne)
范围之中 $in, 不在范围之中 $nin
存在查询(存在 $exists、null 查询)
逻辑运算查询(或者 $or、等于 $and、非或者 $nor 以及 not)正则查询(not) 正则查询(not)正则查询(regex)

语法

基础语法

{key: 正则标记}

完整语法

{key: {“regex":正则标记,"regex": 正则标记, "regex":正则标记,"options”: 选项}}
对于 options 主要是设置正则的信息查询的标记:
“i”: 忽略字母大小写
“m”: 忽多行查找
“x”: 空白字符串除了被转义的或在字符类中意外的完全被忽略
“s”:匹配所有的字符(圆点,“.”),包括换行内容

取模查询($mod)
// 语法
db.col.find({ field: { $mod: [ divisor, remainder ]} })
// 通俗的理解为:
{ field: { $mod: [ 数字, 小数位 ]} }

批量插入:
db.inventory.insertMany([
{ item: “journal”, qty: 25, size: { h: 14, w: 21, uom: “cm” }, status: “A” },
{ item: “notebook”, qty: 50, size: { h: 8.5, w: 11, uom: “in” }, status: “A” }

]);

范围查询:

http://www.dtcms.com/a/341079.html

相关文章:

  • 【论文阅读】-《SIGN-OPT: A QUERY-EFFICIENT HARD-LABEL ADVERSARIAL ATTACK》
  • Gitea Webhook教程:实现git push后自动部署更新网站 (CI/CD入门)
  • 7.2 Linux:驱动开发——模块机制
  • 7.3 Linux:驱动开发——应用程序和驱动程序的交互
  • imx6ull-驱动开发篇30——Linux 非阻塞IO实验
  • 电商平台商品详情数据爬取教程​
  • JS原型链
  • 第10课_Rust网络编程
  • TrustZone 版的按键点灯程序下载调试 LAT1492
  • 迅为RK3562开发板Android修改uboot logo
  • element UI 和 element plus 在组件上有哪些不同
  • 《算法导论》第 35 章-近似算法
  • 《设计模式之禅》笔记摘录 - 17.模板方法模式
  • hot100 之160-相交链表(双指针切换)
  • 如何合并分卷压缩文件?两种方法让文件更整洁
  • SQL详细语法教程(七)核心优化
  • 【CocosCreator】electron/Cocos双窗口本地模拟聊天系统
  • 挑战极限:在256MB内存的机器上构建MySQL极简安装方案
  • Nginx 负载均衡和缓存配置
  • Unicode 字符串转 UTF-8 编码算法剖析
  • FPGA实现Aurora 64B66B图像视频点对点传输,基于GTH高速收发器,提供2套工程源码和技术支持
  • 科研笔记:博士论文写作攻略
  • IPSEC安全基础前篇
  • 七十三、【Linux数据库】MySQL数据库PXC 集群概述与演示
  • mvdr波束形成
  • week3-[分支结构]2023
  • STM32F407VGT6从零建立一个标准库工程模板+VSCode或Keil5
  • 【电气工程学习】
  • 可传参配置的同步异步fifo
  • PyTorch 社区贡献 和 设计原则