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” }
]);
范围查询: