我需要根据一些固定标准过滤一些用户.我有一个 user 集合和一个 talent 集合.人才收藏包含对主类别收藏的引用.
I need to filter some users according to some fixed criteria. I have a user collection and a talent collection. The talent collection holds the reference to a master category collection.
我需要根据人才集合中的类别和用户集合中的某些键来过滤这些用户.
What I need is to filter these users according to the category in the talent collection and some keys from the user collection.
例如,我需要搜索一个性别为男性",教育程度为"BTech"并且具有程序员和测试员才能的用户
我的用户集合就像
{ "_id": "5f1939239bd35429ac9cd78f", "isOtpVerified": "false", "role": "user", "adminApproved": 1, "status": 0, "languages": "Malayalam, Tamil, Telugu, Kannada", "name": "Test user", "email": "test@email", "phone": "1234567890", "otp": "480623", "uid": 100015, "bio": "Short description from user", "dob": "1951-09-07T00:00:00.000Z", "gender": "Male", "education": "Btech", "bodyType": "", "complexion": "", "height": "", "weight": "", "requests": [], "location": { "place": "place", "state": "state", "country": "country" }, "image": { "avatar": "5f1939239bd35429ac9cd78f_avatar.jpeg", "fullsize": "5f1939239bd35429ac9cd78f_fullsize.png", "head_shot": "5f1939239bd35429ac9cd78f_head_shot.jpeg", "left_profile": "5f1939239bd35429ac9cd78f_left_profile.png", "right_profile": "5f1939239bd35429ac9cd78f_right_profile.png" }, "__v": 42, "createdAt": "2020-07-23T07:15:47.387Z", "updatedAt": "2020-08-18T18:54:22.272Z", }人才收集
[ { "_id": "5f38efef179aca47a0089667", "userId": "5f1939239bd35429ac9cd78f", "level": "5", "chars": { "type": "Fresher", }, "category": "5f19357b50bcf9158c6be572", "media": [], "createdAt": "2020-08-16T08:35:59.692Z", "updatedAt": "2020-08-16T08:35:59.692Z", "__v": 0 }, { "_id": "5f3b7e6f7e322948ace30a2c", "userId": "5f1939239bd35429ac9cd78f", "level": "3", "chars": { "type": "Fresher", }, "category": "5f19359250bcf9158c6be573", "media": [ { "adminApproved": 0, "status": 0, "_id": "5f3c22573065f84a48e04a14", "file": "id=5f1939239bd35429ac9cd78f&dir=test&img=5f1939239bd35429ac9cd78f_image_undefined.jpeg", "description": "test", "fileType": "image", "caption": "test file" }, { "adminApproved": 0, "status": 0, "_id": "5f3c2d7a8c7f8336b0bfced2", "file": "id=5f1939239bd35429ac9cd78f&dir=test&img=5f1939239bd35429ac9cd78f_image_1.jpeg", "description": "this is a demo poster for testing", "fileType": "image", "caption": "A Test Poster" } ], "createdAt": "2020-08-18T07:08:31.532Z", "updatedAt": "2020-08-18T19:35:22.899Z", "__v": 2 } ]以上文档中的类别是一个单独的类别.类别集合为
And the category in the above document is a separate one populated to this. the category collection as,
[ { "_id": "5f19359250bcf9158c6be573", "status": true, "title": "Testing", "description": "Application tester", "code": "test", "characteristics": [], "createdAt": "2020-07-23T07:00:34.221Z", "updatedAt": "2020-07-23T07:00:34.221Z", "__v": 0 }, { "status": true, "_id": "5f29829a705b4e648c28bc88", "title": "Designer", "description": "UI UX Designer", "code": "uiux", "createdAt": "2020-08-04T15:45:30.125Z", "updatedAt": "2020-08-04T15:45:30.125Z", "__v": 0 }, { "_id": "5f19357b50bcf9158c6be572", "status": true, "title": "programming", "description": "Java programmer", "code": "program", "createdAt": "2020-07-23T07:00:11.137Z", "updatedAt": "2020-07-23T07:00:11.137Z", "__v": 0 } ]所以我的过滤条件将是
{ categories: ["5f19359250bcf9158c6be573", "5f19357b50bcf9158c6be572"], minAge: 18, maxAge: 25, minHeight: 5, maxHeight: 6, minWeight: 50, maxWeight: 80, complexion: "white", gender: "male", }预期结果将是用户具有上述才能和条件,
And the expected result will be a user have both the above talents and followed conditions,
{ users: { ..User details.. }, medias: { ...medias from the matching talents.. } } 推荐答案您需要使用使用管道进行$ lookup ,
- 您
- $ match 进行类别匹配 的条件
- $ lookup 加入 users 集合
- 用户收集字段的
- $ match 条件
- $match you condition for category match
- $lookup to join users collection
- $match conditions for users collections fields
游乐场
更多推荐
使用Mongoose Node.js过滤MongoDB数据库
发布评论