Guest User

Untitled

a guest
Jul 18th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.98 KB | None | 0 0
  1. var mongoose = require('mongoose');
  2.  
  3. var EventSchema = new mongoose.Schema({
  4. name: {type:String},
  5. start_date: {type:Date},
  6. duration: {type:String},
  7. event_id:{type: mongoose.Schema.Types.ObjectId}
  8. });
  9. var Project = new mongoose.Schema({
  10. name: {
  11. type: String,
  12. required: '{PATH} is required!'
  13. },
  14. user_id:{
  15. type: mongoose.Schema.Types.ObjectId,
  16. required:'{PATH} is required!'
  17. },
  18. client: {type: Object},
  19. no_of_events: {type: String, required: '{PATH} is required!'},
  20. start_date:{type:Date, required: '{PATH} is required!'},
  21. end_date:{type:Date, required: '{PATH} is required!'},
  22. budget:{type: String},
  23. groom:{type:Object},
  24. bride:{type:Object},
  25. events:[EventSchema],
  26. status:{type:Number,Default:1}, //0=Inactive, 1=Active, 2=Completed
  27. created_at: { type: Date, default: Date.now },
  28. updated_at: { type: Date, default: Date.now }
  29. });
  30.  
  31. module.exports = mongoose.model('Project', Project);
  32.  
  33. {
  34. "_id": {
  35. "$oid": "5b43582a716d9a4e96345f4a"
  36. },
  37. "bride": {
  38. "city": "Hyderabad",
  39. "phone": "09876543211",
  40. "dob": "1993-05-06T18:30:00.000Z",
  41. "name": "Shriya Bhupal"
  42. },
  43. "groom": {
  44. "city": "Hyderabad",
  45. "phone": "09876543211",
  46. "dob": "1993-08-09T18:30:00.000Z",
  47. "name": "Anindith Reddy"
  48. },
  49. "client": {
  50. "name": "Apoorva Pagar"
  51. },
  52. "end_date": {
  53. "$date": "2018-07-22T18:30:00.000Z"
  54. },
  55. "start_date": {
  56. "$date": "2018-07-10T18:30:00.000Z"
  57. },
  58. "no_of_events": "4",
  59. "user_id": {
  60. "$oid": "5b126966bcc8072e526346ad"
  61. },
  62. "name": "Big Fat Wedding",
  63. "updated_at": {
  64. "$date": "2018-07-09T12:42:18.263Z"
  65. },
  66. "created_at": {
  67. "$date": "2018-07-09T12:42:18.263Z"
  68. },
  69. "events": [
  70. {
  71. "name": "Engagement",
  72. "event_id": {
  73. "$oid": "5b3b232914cdec23c19c034c"
  74. },
  75. "start_date": {
  76. "$date": "2018-07-11T18:30:00.000Z"
  77. },
  78. "duration": "1 Day",
  79. "_id": {
  80. "$oid": "5b43582a716d9a4e96345f4b"
  81. }
  82. },
  83. {
  84. "name": "Mehndi",
  85. "event_id": {
  86. "$oid": "5b3b23b314cdec23c19c034d"
  87. },
  88. "start_date": {
  89. "$date": "2018-07-12T18:30:00.000Z"
  90. },
  91. "duration": "1 Day",
  92. "_id": {
  93. "$oid": "5b43582a716d9a4e96345f4c"
  94. }
  95. },
  96. {
  97. "name": "Sangeet",
  98. "event_id": {
  99. "$oid": "5b3b232914cdec23c19c034c"
  100. },
  101. "start_date": {
  102. "$date": "2018-07-17T18:30:00.000Z"
  103. },
  104. "duration": "2 Days",
  105. "_id": {
  106. "$oid": "5b43582a716d9a4e96345f4d"
  107. }
  108. }
  109. ],
  110. "__v": 0
  111. }
  112.  
  113. {"events": [
  114. {
  115. // it should include event_detail:{ details about event from defaultevents}
  116. "name": "Engagement",
  117. "event_id": {
  118. "$oid": "5b3b232914cdec23c19c034c"
  119. },
  120. "start_date": {
  121. "$date": "2018-07-11T18:30:00.000Z"
  122. },
  123. "duration": "1 Day",
  124. "_id": {
  125. "$oid": "5b43582a716d9a4e96345f4b"
  126. }
  127. },
  128. {
  129. // it should not include event_details as there is no event_id
  130. "name": "Mehndi",
  131. "start_date": {
  132. "$date": "2018-07-12T18:30:00.000Z"
  133. },
  134. "duration": "1 Day",
  135. "_id": {
  136. "$oid": "5b43582a716d9a4e96345f4c"
  137. }
  138. }
  139. ]
  140. }
  141.  
  142. {
  143. "_id": {
  144. "$oid": "5b3b232914cdec23c19c034c"
  145. },
  146. "image": "https://dostbucket.s3.us-east-2.amazonaws.com/events/1530601666360mehndi.svg",
  147. "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
  148. "name": "Sangeet",
  149. "updated_at": {
  150. "$date": "2018-07-03T07:18:01.166Z"
  151. },
  152. "created_at": {
  153. "$date": "2018-07-03T07:18:01.166Z"
  154. },
  155. "__v": 0
  156. }
  157.  
  158. var products = Product.find();
  159.  
  160. products.forEach(product => {
  161. product.events.forEach(event => {
  162. if ('event_id' in event) {
  163. var product = product.events[event];
  164. product.event.event_details = 'my details';
  165. product.save(product);
  166. }
  167. });
  168. });
  169.  
  170. db.colletion.aggregate([
  171. { "$unwind": "$events" },
  172. { "$lookup": {
  173. "from": DefaultEventSchema.collection.name,
  174. "localField": "events.event_id",
  175. "foreignField": "_id",
  176. "as": "events.event_id"
  177. }},
  178. { "$group": {
  179. "_id": "$_id",
  180. "events": { "$push": "$events" }
  181. "otherFields": { "$first": "$otherFields" }
  182. }}
  183. ])
Add Comment
Please, Sign In to add comment