假設我有一個包含用戶的資料庫集合,并且我想將一個物件添加到一個檔案內的陣列中。是這樣的:
{
_id: "636e8e1dd710eed71565741c",
username: "test",
password: "$2b$10$/s9.kRYSax380Xrxf3xyVO9Z6Otc/WVx5kBSLKfu43/wYP.TSnzvW",
tasks: [{name: task1, status: "finished"}]
}
我要讓它看起來像這樣:
{
_id: "636e8e1dd710eed71565741c",
username: "test",
password: "$2b$10$/s9.kRYSax380Xrxf3xyVO9Z6Otc/WVx5kBSLKfu43/wYP.TSnzvW",
tasks: [{name: task1, status: "finished"}, {name: task2, status: "unfinished"}]
}
那么哪種方法在這里更合適,因為我正在向嵌入式陣列添加一個新物件而不是更新一個已經存在的物件?謝謝你。
uj5u.com熱心網友回復:
POST 和 PATCH 之間的選擇取決于 URL 的路徑。如果路徑包含_id,我更喜歡
POST /collection/636e8e1dd710eed71565741c/tasks
Content-Type: application/json
{"name": "task2", "status": "unfinished"}
但是,如果_id是有效載荷的一部分,我更喜歡
PATCH /collection
Content-Type: application/json
{"_id": "636e8e1dd710eed71565741c",
"tasks@add": [{"name": "task2", "status": "unfinished"}]}
但是這種有效載荷格式依賴于“命名約定”:
_id用于標識要修補的條目。- 后綴
@add表示將任務添加到現有陣列中。 "tasks@change": [{"name": "task1", "status": "archived"}]而是更新現有任務。
如果服務器知道每個任務都由其標識name,則不需要后綴:
PATCH /collection
Content-Type: application/json
{"_id": "636e8e1dd710eed71565741c",
"tasks": [{"name": "task1", "status": "archived"},
{"name": "task2", "status": "unfinished"}]}
更新現有任務并添加新任務。甚至
PATCH /collection/636e8e1dd710eed71565741c/tasks
Content-Type: application/json
[{"name": "task1", "status": "archived"},
{"name": "task2", "status": "unfinished"}]
我希望這些示例可以幫助您找到合適的模式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/532490.html
上一篇:在MongoDB中使用$addToSet后的分組和求和
下一篇:MongoDB聚合回傳一個空陣列
