MongoDB – 基于对象数组的项目数据

huangapple go评论97阅读模式
英文:

MongoDB - Project data based on array of objects

问题

我有两位家长的学生数据:

  1. {
  2. _id: ObjectId('643f8a6773a92fb1552e4c89'),
  3. studentName: 'Peter Jackson',
  4. studentId: 'SID1001',
  5. grade: 2,
  6. gender: 'Male',
  7. parentDetails: [
  8. {
  9. _id: ObjectId('63fee5a42f60946679146768'),
  10. name: 'Jackson Steve',
  11. email: 'jack.steve@gmail.com',
  12. mobile: 'xxxxxxxxxx',
  13. relation: 'Father'
  14. },
  15. {
  16. _id: ObjectId('6447c1ba22670472ed4b29cc'),
  17. name: 'Amenda Jackson',
  18. email: 'amenda.jack@gmail.com',
  19. mobile: 'xxxxxxxxxx',
  20. relation: 'Mother'
  21. }
  22. ]
  23. }

我需要根据每个家长显示学生数据,如下所示:

  1. [
  2. {
  3. studentId: 'SID1001',
  4. studentName: 'Peter Jackson',
  5. grade: 2,
  6. parentName: 'Jackson Steve',
  7. parentEmail: 'jack.steve@gmail.com',
  8. relation: 'Father'
  9. },
  10. {
  11. studentId: 'SID1001',
  12. studentName: 'Peter Jackson',
  13. grade: 2,
  14. parentName: 'Amenda Jackson',
  15. parentEmail: 'amenda.jack@gmail.com',
  16. relation: 'Mother'
  17. }
  18. ]

需要显示每个家长的详细信息以及他们的子女详细信息。
需要一些有价值的帮助。

英文:

I am having student data with two parents:

  1. {
  2. _id: ObjectId('643f8a6773a92fb1552e4c89'),
  3. studentName: 'Peter Jackson',
  4. studentId: 'SID1001',
  5. grade: 2,
  6. gender: 'Male',
  7. parentDetails: [
  8. {
  9. _id: ObjectId('63fee5a42f60946679146768'),
  10. name: 'Jackson Steve',
  11. email: 'jack.steve@gmail.com',
  12. mobile: 'xxxxxxxxxx',
  13. relation: 'Father'
  14. },
  15. {
  16. _id: ObjectId('6447c1ba22670472ed4b29cc'),
  17. name: 'Amenda Jackson',
  18. email: 'amenda.jack@gmail.com',
  19. mobile: 'xxxxxxxxxx',
  20. relation: 'Mother'
  21. }
  22. ]
  23. }

I need to show the student data based on each parent like below:

  1. [
  2. {
  3. studentId: 'SID1001',
  4. studentName: 'Peter Jackson',
  5. grade: 2,
  6. parentName: 'Jackson Steve',
  7. parentEmail: 'jack.steve@gmail.com',
  8. relation: 'Father'
  9. },
  10. {
  11. studentId: 'SID1001',
  12. studentName: 'Peter Jackson',
  13. grade: 2,
  14. parentName: 'Amenda Jackson',
  15. parentEmail: 'amenda.jack@gmail.com',
  16. relation: 'Mother'
  17. }
  18. ]

Need to show individual parent details with their child details.
Need some valuable help.

答案1

得分: 3

  1. $unwind - 将 parentDetails 数组拆分为多个文档。

  2. $project - 对输出文档进行修饰以获得所需的输出。

  1. db.collection.aggregate([
  2. {
  3. $unwind: "$parentDetails"
  4. },
  5. {
  6. $project: {
  7. studentName: 1,
  8. studentId: 1,
  9. grade: 1,
  10. parentName: "$parentDetails.name",
  11. parentEmail: "$parentDetails.email",
  12. relation: "$parentDetails.relation"
  13. }
  14. }
  15. ])

在Mongo Playground中查看演示

英文:
  1. $unwind - Deconstruct the parentDetails array into multiple documents.

  2. $project - Decorate the output document to desired output.

  1. db.collection.aggregate([
  2. {
  3. $unwind: "$parentDetails"
  4. },
  5. {
  6. $project: {
  7. studentName: 1,
  8. studentId: 1,
  9. grade: 1,
  10. parentName: "$parentDetails.name",
  11. parentEmail: "$parentDetails.email",
  12. relation: "$parentDetails.relation"
  13. }
  14. }
  15. ])

Demo @ Mongo Playground

huangapple
  • 本文由 发表于 2023年7月6日 11:43:47
  • 转载请务必保留本文链接:https://go.coder-hub.com/76625357.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定