[英]How to represent a complex MongoDB query as URL params
我正在創建一個 MERN 應用程序,它允許我查詢我的數據庫以查找具有技能的用戶。 我的問題是我正在訪問 API 端點以在我的 mongoDB 數據庫中搜索這些用戶,但我不確定如何在 URL 參數中表示這些查詢。
如果我想找到 React 技能大於 3 年經驗、SQL 技能小於 5 年、C++ 技能和 1 年經驗的用戶,這里是 ZB9EF13A6134827FE97D4CD55A71 的查詢
User.find({
$and: [
{ skills: { $elemMatch: { skill: 'React', yearsExperience: { $gt: 3 } } } },
{
skills: { $elemMatch: { skill: 'SQL', yearsExperience: { $lt: 5 } } },
},
{
skills: { $elemMatch: { skill: 'C++', yearsExperience: 1 } },
}
],
})
以下是用戶數據在數據庫中的存儲方式:
skills: [
{skill: 'React', yearsExperience: 3},
{skill: 'HTML', yearsExperience: 5},
{skill: 'JavaScript', yearsExperience: 5},
{skill: 'SQL', yearsExperience: 3},
{skill: 'TypeScript', yearsExperience: 1},
{skill: 'C++', yearsExperience: 1}
]
我正在嘗試將第一個查詢轉換為 url 以傳遞給我的 API 以獲取相關用戶,但我不確定如何在參數中表示所有這些信息。 我試過沒有運氣:
http://localhost:1337/api/v1/user?skills=React,[gt]3&skills=SQL,[lt]5&skills=C++,1
任何幫助將不勝感激!
對於如此復雜的過濾,使用帶有 json 主體的 POST 作為過濾器可能會很重要,例如:
POST http://localhost:1337/api/v1/user/search
{
"conditions": [
{
"class": "skills",
"field": "React",
"type": "GT",
"value": "3"
},
{
"class": "skills",
"field": "SQL",
"type": "LT",
"value": "3"
},
{
"class": "skills",
"field": "C++",
"type": "EQ",
"value": "1"
}
]
}
當然,提供的結構並不理想,您可以根據自己的情況進行更好的修改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.