簡體   English   中英

如何將復雜的 MongoDB 查詢表示為 URL 參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM