🏆🏆🏆教程全知識點簡介:1、Dubbo的前世今生 1、項目介紹 1.1、項目背景 1.2、市場分析 1.3、目標用户羣體 1.4、使用場景 1.5、競爭對手分析 1.7、技術方案 2、前後端分離開發思想 3、開發工具與環境搭建 3.1、開發工具 3.2、環境搭建 4、sms_code驗證瑪 4.1 阿里雲短信 4.2 自動裝配 1. 完善用户信息 1.2 百度人臉識別 1.2.1 概述 1.2.2 賬號申請 1.2.4 抽取模板工具 2.2 更新用户資料 2.2.1 接口文檔 2.2.2 代碼實現 3. 統一token處理 3.1.需求分析 3.2 解決方案 攔截器(Interceptor) ThreadLocal MongoDB入門 數據庫以及表的操作 新增數據 更新數據 刪除數據 查詢數據 1.3 設置陌生人問題 1.4 通知設置 1.5 黑名單管理 4. SpringData-Mongo 4.2 完成基本操作 5. 今日佳人 5.1 表結構設計 5.2 服務提供者 5.2.0 導入依賴 5.2.2 RecommendUserApi接口 分片集羣 原理介紹 集羣搭建 2、圈子功能 2.1、功能説明 3、圈子實現 3.2、發佈動態 1. 動態查詢 1.1 查詢好友動態 2. 圈子互動 2.3 動態點贊 2.4.3 喜歡標識 安裝 準備 使用 1. 即時通信 2. 環信 2.1 開發簡介 2.2 環信Console 2.3 環信API介紹 初始化 基礎API 3. 抽取環信組件 3.1 編寫Properties對象 3.2 編寫HuanXinTemplate 3.3 編寫自動配置類 2. MongoDB地理位置檢索 2.1 地理位置索引 Point LineString Polygon 2.2 案例 3. 上報地理位置 4. 搜附近 1. 我的訪客 1.2 記錄訪客數據 tanhua-model tanhua-app-server tanhua-dubbo-interface 1.3 首頁誰看過我 需求分析 3. FastDFS 3.2. 工作原理 3.2.1. 文件的上傳 分佈式文件系統FDFS配置 4. 發佈小視頻 1、用户凍結解凍 1.1 用户凍結 1.3 查詢數據列表 1.4 明日系統修改 2.2 定時任務 3、內容審核 1、瞭解推薦系統 1.1、什麼是推薦系統? 1.3、推薦系統業務流程 1.4、協同過濾推薦算法 1.5、ALS算法 2、好友推薦 2.1、流程 2.2、部署好友推薦服務
<!-- start:bj1 -->
📚📚👉👉👉本站這篇博客: https://segmentfault.com/a/1190000047225317 中查看
📚📚👉👉👉本站這篇博客: https://segmentfault.com/a/1190000047242866 中查看
<!-- end:bj1 -->
✨ 本教程項目亮點
🧠 知識體系完整:覆蓋從基礎原理、核心方法到高階應用的全流程內容
💻 全技術鏈覆蓋:完整前後端技術棧,涵蓋開發必備技能
🚀 從零到實戰:適合 0 基礎入門到提升,循序漸進掌握核心能力
📚 豐富文檔與代碼示例:涵蓋多種場景,可運行、可複用
🛠 工作與學習雙參考:不僅適合系統化學習,更可作為日常開發中的查閲手冊
🧩 模塊化知識結構:按知識點分章節,便於快速定位和複習
📈 長期可用的技術積累:不止一次學習,而是能伴隨工作與項目長期參考
🎯🎯🎯全教程總章節
🚀🚀🚀本篇主要內容
MongoDB入門
數據庫以及表的操作
#查看所有的數據庫
> show dbs
#通過use關鍵字切換數據庫
> use admin
#創建數據庫
#説明:在MongoDB中,數據庫是自動創建的,通過use切換到新數據庫中,進行插入數據即可自動創建數據庫
> use testdb
> show dbs #並沒有創建數據庫
> db.user.insert({id:1,name:'zhangsan'}) #插入數據
> show dbs
#查看錶
> show tables
> show collections
#刪除集合(表)
> db.user.drop()
true #如果成功刪除選定集合,則 drop() 方法返回 true,否則返回 false。
#刪除數據庫
> use testdb #先切換到要刪除的數據中
> db.dropDatabase() #刪除數據庫
新增數據
在MongoDB中,存儲的文檔結構是一種類似於json的結構,稱之為bson(全稱為:Binary JSON)。
#插入數據
#語法:db.表名.insert(json字符串)
> db.user.insert({id:1,username:'zhangsan',age:20})
> db.user.find() #查詢數據
更新數據
update() 方法用於更新已存在的文檔。語法格式如下:
db.collection.update(
<query>,
<update>,
[
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
]
)
參數説明:
- query : update的查詢條件,類似sql update查詢內where後面的。
- update : update的對象和一些更新的操作符(如$,$inc.$set)等,也可以理解為sql update查詢內set後面的
- upsert : 可選,這個參數的意思是,如果不存在update的記錄,是否插入objNew,true為插入,默認是false,不插入。
- multi : 可選,mongodb 默認是false,只更新找到的第一條記錄,如果這個參數為true,就把按條件查出來多條記錄全部更新。
- writeConcern :可選,拋出異常的級別。
#查詢全部
> db.user.find()
#更新數據
> db.user.update({id:1},{$set:{age:22}})
#注意:如果這樣寫,會刪除掉其他的字段
> db.user.update({id:1},{age:25})
#更新不存在的字段,會新增字段
> db.user.update({id:2},{$set:{sex:1}}) #更新數據
#更新不存在的數據,默認不會新增數據
> db.user.update({id:3},{$set:{sex:1}})
#如果設置第一個參數為true,就是新增數據
> db.user.update({id:3},{$set:{sex:1}},true)
刪除數據
通過remove()方法進行刪除數據,語法如下:
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
參數説明:
- query :(可選)刪除的文檔的條件。
- justOne : (可選)如果設為 true 或 1,則只刪除一個文檔,如果不設置該參數,或使用默認值 false,則刪除所有匹配條件的文檔。
- writeConcern :(可選)拋出異常的級別。
實例:
#刪除數據
> db.user.remove({})
#插入4條測試數據
db.user.insert({id:1,username:'zhangsan',age:20})
db.user.insert({id:2,username:'lisi',age:21})
db.user.insert({id:3,username:'wangwu',age:22})
db.user.insert({id:4,username:'zhaoliu',age:22})
> db.user.remove({age:22},true)
#刪除所有數據
> db.user.remove({})
查詢數據
MongoDB 查詢數據的語法格式如下:
db.user.find([query],[fields])
- query :可選,使用查詢操作符指定查詢條件
- fields :可選,使用投影操作符指定返回的鍵。查詢時返回文檔中所有鍵值, 只需省略該參數即可(默認省略)。
條件查詢:
| 操作 | 格式 | 範例 | RDBMS中的類似語句 |
|---|---|---|---|
| 等於 | {<key>:<value>} |
db.col.find({"by":"黑馬程序員"}).pretty() |
where by = '黑馬程序員' |
| 小於 | {<key>:{$lt:<value>}} |
db.col.find({"likes":{$lt:50}}).pretty() |
where likes < 50 |
| 小於或等於 | {<key>:{$lte:<value>}} |
db.col.find({"likes":{$lte:50}}).pretty() |
where likes <= 50 |
| 大於 | {<key>:{$gt:<value>}} |
db.col.find({"likes":{$gt:50}}).pretty() |
where likes > 50 |
| 大於或等於 | {<key>:{$gte:<value>}} |
db.col.find({"likes":{$gte:50}}).pretty() |
where likes >= 50 |
| 不等於 | {<key>:{$ne:<value>}} |
db.col.find({"likes":{$ne:50}}).pretty() |
where likes != 50 |
實例:
#插入測試數據
db.user.insert({id:1,username:'zhangs
# 介紹
- MongoDB環境搭建
- MongoDB基本CRUD操作
- 通過JavaApi操作MongoDB
- SpringBoot整合MongoDB
# 1. 通用設置
## 1.1 需求分析
### 1.1.1 需求分析
通用設置,包含明日交友APP基本的軟件設置功能。包含:
設置陌生人問題:當平台其他用户想進行在線交流時需要回答陌生人問題。
通用設置:包含一些APP通知設置
黑名單:對於不感興趣的用户設置黑名單屏蔽騷擾


### 1.1.2 數據庫表
**通用設置**
CREATE TABLE tb_settings (
id bigint(20) NOT NULL AUTO_INCREMENT,
user_id bigint(20) DEFAULT NULL,
like_notification tinyint(4) DEFAULT '1' COMMENT '推送喜歡通知',
pinglun_notification tinyint(4) DEFAULT '1' COMMENT '推送評論通知',
gonggao_notification tinyint(4) DEFAULT '1' COMMENT '推送公告通知',
created datetime DEFAULT NULL,
updated datetime DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='設置表';
**問題表**
CREATE TABLE tb_question (
id bigint(20) NOT NULL AUTO_INCREMENT,
user_id bigint(20) DEFAULT NULL COMMENT '用户id',
txt varchar(200) DEFAULT NULL COMMENT '問題內容',
created datetime DEFAULT NULL,
updated datetime DEFAULT NULL,
PRIMARY KEY (id),
KEY user_id (user_id)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
**黑名單**
CREATE TABLE tb_black_list (
id bigint(20) NOT NULL AUTO_INCREMENT,
user_id bigint(20) DEFAULT NULL,
black_user_id bigint(20) DEFAULT NULL,
created datetime DEFAULT NULL,
updated datetime DEFAULT NULL,
PRIMARY KEY (id),
KEY user_id (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='黑名單';
### 1.1.3 實體類
#### Settings
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Settings extends BasePojo {
private Long id;
private Long userId;
private Boolean likeNotification;
private Boolean pinglunNotification;
private Boolean gonggaoNotification;
}
#### Question
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Question extends BasePojo {
private Long id;
private Long userId;
//問題內容
private String txt;
}
#### BlackList
@Data
@NoArgsConstructor
@AllArgsConstructor
public class BlackList extends BasePojo {
private Long id;
private Long userId;
private Long blackUserId;
}
## 1.2 查詢通用設置
### 1.2.1 接口文檔
接口地址:http://192.168.136.160:3000/project/19/interface/api/268

### 1.2.2 代碼實現
#### vo對象
@Data
@NoArgsConstructor
@AllArgsConstructor
public class SettingsVo implements Serializable {
private Long id;
private String strangerQuestion = "";
private String phone;
private Boolean likeNotification = true;
private Boolean pinglunNotification = true;
private Boolean gonggaoNotification = true;
}
#### tanhua-app-server
在<font color=red><b>`tanhua-app-server`</b></font>中創建`SettingsController`和`SettingsService`
##### SettingsController
在`SettingsController`中定義控制器接收請求 , 調用業務層完成業務邏輯
/**
- 查詢用户