node.js - 如何获得满足 mongodb 中字段所有条件的用户?
问题描述
我正在使用 MERN 堆栈进行项目。我正在尝试创建一个用户输入一些数据的功能,我们将根据他们输入的标准返回与他们匹配的学生。例如,如果他们输入他们想要一个 12 年级的男性并上 X 学校,那么我们返回所有具有等于学校 X 的学校字段、等于 12 的年级字段和一个性别字段的人等于男性。如果它不符合任何这些标准,则应淘汰该用户。此外,用户不必输入所有数据。所以说他们想认识一个 12 年级的男性,但不关心他们的学校,他们可以输入这个,然后我们返回所有符合年级和性别规范的用户。到目前为止,我
const userProfiles = await User.find({}, { grade: profileFields.grade, grade: 1 });
但是,我也想确保它们符合其他规格,如果其中一个规格留空,我仍然想退回符合其余规格的用户。我真的很感激任何帮助,我一直在努力解决这个问题。谢谢!
解决方案
让我们假设这profileFields
是一个包含您提到的所有这些条件的对象。例如
profileFields = {grade: 12, gender: 'M', school: 'X'};
但有时,它可能会出现:
profileFields = {grade: 12, gender: 'M' school: ''}; //school is missing, which means select all schools
您需要做的就是从这个对象组装一个查找查询:
const query = {};
if(profileFields.grade)
query.grade = profileFields.grade;
if(profileFields.gender)
query.gender = profileFields.gender;
if(profileFields.school)
query.school = profileFields.school;
所以现在,例如,如果使用输入{grade: 12, gender: '', school: 'X'}
,您的查询填充看起来像这样:{grade: 12, school: 'X'}
并省略性别,这将告诉 mongodb 返回所有性别。
我可以看到你正在使用猫鼬,所以......
User.find(query)
.then(users => {
//Your matched users will be in variable users
console.out(users)
})
请注意,我在这里做了一些假设。例如,您的 User 架构实际上具有名为gender
school
和的字段grade
。如果成绩字段被命名为 ,user_grade
那么您的查询程序集将更改为query.user_grade = profileFields.grade
推荐阅读
- networking - 如何在设置了 cookie 的情况下将请求重定向到不同的域/ip:port?
- windows-runtime - 是否可以为 Windows 运行时组件(C++/WinRT)添加版本?
- amazon-web-services - 为 Autoscaling Group 中的实例分配静态弹性 IP
- javascript - 我可以使用返回加权布尔值的函数来实现加权随机性吗?
- python-3.x - ImportError:无法从“countstring”导入名称“count_hi”
- pandas - 如何从 Google 表格上传到 BigQuery?我可以通过 Pandas DF 来完成吗?
- swagger-2.0 - 嵌套异常是 java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ser/std/ToStringSerializerBase
- javascript - Angular - 如何禁用保留值的字段
- psycopg2 - 使用python在Postgresql中提取大数据(最好是数据框格式)
- lit-element - 使用 lit-element 渲染多个页面之一