安装 MongoDB
由于本机用了另一个 admin 用户安装了一些程序,所以用当前用户安装 brew install mongodb-atlas 不成功。就决定在本地安装 MongoDB。
从 MongoDB 官网下载安装包。网址:https://www.mongodb.com/try/download/community,相关版本信息:Version - 8.0.0(current), Platform - macOS x64, Package - tgz。
下载完成后,执行解压缩:~/mongodb8 % tar -xvf mongodb-macos-x86_64-8.0.0.tgz
在 MongoDB 5.xx 以后,安装包中就没有 mongo(就是 MongoDB Shell),于是无法用命令行方式操作 MongoDB。从https://www.mongodb.com/try/download/shell 下载 zip 包,解压后执行 mongosh 即可
安装数据库工具:https://www.mongodb.com/docs/database-tools/installation/installation-macos/ mongod --dbpath /usr/local/var/mongodb --logpath /usr/local/var/log/mongodb/mongo.log --fork mongod --dbpath ~/mongodb8/data --logpath ~/mongodb8/log/mongo.log --fork --dbpath 设置数据存放目录 --logpath 设置日志存放目录 --fork 在后台运行数据库设计
《财富》世界500强排行榜
collection: glb500_yr23
rank: 排名
name: 公司名称。榜单上的公司名称。
revenue: 榜单上写的营业收入。单位:百万美元。
profit:榜单上写的例如。单位:百万美元。
country:公司所属国家。
name_fr:组织的正式/注册名称。比如中国移动的名称应该是中国移动通信集团有限公司,而不是中国移动通信集团公司(虽然2017年之前叫这个名字)
mongoimport -d remai -c glb500_yr2023 --type=csv --headerline ~/mongodb8/inf-data/glb500-yr2023.csv
毕业生去向信息
collection:student_gy23
2023年毕业的学生
sid:学号。
name: 姓名。
//gender: 性别。
major:专业。
path_after_graduate:毕业后的去向。比如升学、签三方协议入职,等等。
organization:雇佣单位。
type_org:雇佣单位的性质。比如国企。
industry_org:雇佣单位所属行业。
location_org:雇佣单位所在地。比如xx省xx市xx区。
position_type:入职岗位的类别。
degree: bachelor / master / doctor
path_fr: 去向的规整名称,根据 path_after_graduate 取值得到。比如:
mongoimport -d remai -c student_gy23 --type=csv --headerline ~/mongodb8/inf-data/student-gy23.csv
{ "degree": "bachelor-23", "path_type": "got-job" }组织信息
collection: organization
(组织的信息)
sn:序号。唯一。采用36进制。
name_fr:组织的名称,正式/注册的名称。
name_aka:组织的简称/俗称。比如中国移动通信集团,通常叫做中国移动。
category: 组织的分类。比如政府机关、事业单位、企业、其他,等。
hierarchy_psn:上级组织的序号。
h_comments: 层级关系的相关证据。
mongoimport -d remai -c organization --type=csv --headerline ~/mdb8/inf-data/organization.csv
数据库操作
以下以 MongoDB Compass v1.45.2 为例。
1、删除文档document的字段field,用 update 之 $unset
比如删除 db = remai, collection = student_y2023 中的 major 字段。
(1)链接数据库后,在界面左侧选择对应的 collection。
(2)然后在 document tab中,点击 update 按钮。
(3)在出现的界面的 update 框输入如下信息,就可以了。
{
$unset: {
major: ""
}
}
2、增加字段A,用 aggregate 之 $addFields。
比如增加一个字段 usn,取值等于已有字段 sn。
(1) 链接数据库后,在界面左侧选择对应的 collection。
(2) 然后选择 Aggregation tab,点击 add Stage 按钮。
(3) 在出现的界面中,选择 $addFields,bing 输入如下信息,就可以了。
/**
* newField: The new field name.
* expression: The new field expression.
*/
{
usn: "$sn"
}
3、完全复制集合A到集合B,可以使用 aggregate 之 $match $out
比如复制集合 list_soe 到 bk_list_soe 做备份,则可以在 mongosh 中执行
db.list_soe.aggregate([{ $match: {} }, { $out: "bk_list_soe" }])
4、修改字段名,可以使用 updateMany 之 $rename
比如将字段名 sn 修改为 usn,则可以在 mongosh 中执行
db.bk_list_soe.updateMany({},{$rename:{"sn":"usn"}})
Python里面的 dict,是可变类型。即 dp = dict,对dp 的更改,会反映到 dict中。dp不是 dict的一个副本,而是引用,类似指针。
dict 作为参数传入函数,在函数中对 dict 做的修改,在函数返回后,也依然有效。
参考信息
Python Faker 生成数据库测试数据。(241227)