Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.05 KB | None | 0 0
  1. https://docs.mongodb.com/manual/reference/operator/aggregation-pipeline/
  2.  
  3. $match
  4. $unwind
  5. $group
  6. $lookup
  7. $count
  8.  
  9. db.packages.insertMany([
  10. {
  11. name: "Package no. 2534",
  12. destination: "Alabama",
  13. items: [
  14. {name: "watch", type: "electronic", quantity: 6},
  15. {name: "baseball bat", type: "carpentry", quantity: 8},
  16. {name: "basil", type: "plant", quantity: 3}
  17. ]
  18. },
  19. {
  20. name: "Package no. 1",
  21. items: [
  22. {name: "handheld", type: "electronic", quantity: 8},
  23. ]
  24. },
  25. {
  26. name: "Packie",
  27. items: [
  28. {name: "Maybach", type: "car", quantity: 1},
  29. {name: "pitching machine", type: "electromechanical", quantity: 5},
  30. {name: "dasy", type: "plant", quantity: 401}
  31. ]
  32. },
  33. {
  34. name: "Big Box",
  35. items: [
  36. {name: "bath tub", type: "home appliance", quantity: 600},
  37. {name: "AC unit", type: "electric", quantity: 8645},
  38. {name: "football", type: "sport accesory", quantity: 34673}
  39. ]
  40. }
  41. ]}
  42.  
  43. //pakiety bez destination
  44. db.packages.find({destination:{$exists:false}})
  45.  
  46. //
  47. > db.packages.find({destination:{$exists:0},"items.type":{$in:["electric", "electronic", "electromechanical"]}})
  48.  
  49. // items: quantity is divisible by 4
  50. > db.packages.find( { "items.quantity": { $mod: [ 4, 0 ] } } ).pretty()
  51.  
  52. //
  53.  
  54. db.packages.find({destination:{$exists:0},"items.type":{$in:["electric", "electronic", "electromechanical"]}}{"items.name"})
  55.  
  56. //bez id i z nazwa tylko
  57. > db.packages.find({destination:{$exists:0},"items.type":{$in:["electric", "electronic", "electromechanical"]}},{"_id":0,name:1})
  58. { "name" : "Package no. 1" }
  59. { "name" : "Packie" }
  60. { "name" : "Big Box" }
  61.  
  62.  
  63.  
  64. > db.inventory.updateMany({type:"other"}, {$set:{type:"other type"}, $inc:{quantity:1 }})
  65. { "acknowledged" : true, "matchedCount" : 2, "modifiedCount" : 2 }
  66. >
  67. >
  68. >
  69. >
  70. >
  71. >
  72. >
  73. >
  74. >
  75. > db.inventory.deleteMany({})
  76. { "acknowledged" : true, "deletedCount" : 6 }
  77. > db.packgages.deleteMany({})
  78. { "acknowledged" : true, "deletedCount" : 0 }
  79.  
  80.  
  81.  
  82. > db.sillinesses.insertMany([
  83. ... {
  84. ... silly: "steps",
  85. ... bob: ["marley", "harley", "builder"],
  86. ... coolness: 10.01
  87. ... },
  88. ... {
  89. ... silly: "faces",
  90. ... bob: ["bip", "pob", "goose", "smoose"],
  91. ... coolness: 9.99
  92. ... },
  93. ... {
  94. ... silly: "ideas",
  95. ... bob: ["president", "minister", "senator", "congresman"],
  96. ... coolness: -1000
  97. ... },
  98. ... {
  99. ... silly: "hats",
  100. ... bob: ["bean", "bread", "buffet", "barbeque"],
  101. ... coolness: 11.3
  102. ... }])
  103.  
  104.  
  105. //za punkty:
  106. db.sillinesses.deleteMany({$and: [{bob: {$size:4}}, {coolness:{$gt:10}}]})
  107.  
  108. //final task:
  109. > db.orders.insert([
  110. ... {
  111. ... client: {
  112. ... firstName: "John",
  113. ... lastName: "Smith" },
  114. ... orderedItems: [
  115. ... { name: "itemA", qty: 5},
  116. ... { name: "itemS", qty: 3} ]
  117. ... },
  118. ... {
  119. ... client: {
  120. ... firstName: "John",
  121. ... lastName: "Jacobie" },
  122. ... orderedItems: [
  123. ... { name: "itemA", qty: 2},
  124. ... { name: "itemB", qty: 4} ]
  125. ... },
  126. ... {
  127. ... client: {
  128. ... firstName: "BOb",
  129. ... lastName: "Smith" },
  130. ... orderedItems: [
  131. ... { name: "itemC", qty: 5},
  132. ... { name: "itemD", qty: 7} ]
  133. ... },
  134. ... {
  135. ... client: {
  136. ... firstName: "John",
  137. ... lastName: "Scott" },
  138. ... orderedItems: [
  139. ... { name: "itemA", qty: 1},
  140. ... { name: "itemD", qty: 3} ]
  141. ... },
  142. ... {
  143. ... client: {
  144. ... firstName: "Scot",
  145. ... lastName: "John" },
  146. ... orderedItems: [
  147. ... { name: "itemF", qty: 2},
  148. ... { name: "itemE", qty: 8} ]
  149. ... },
  150. ... {
  151. ... client: {
  152. ... firstName: "John",
  153. ... lastName: "Scatman" },
  154. ... orderedItems: [
  155. ... { name: "itemF", qty: 13},
  156. ... { name: "itemG", qty: 28} ]
  157. ... },
  158. ... {
  159. ... client: {
  160. ... firstName: "Johny",
  161. ... lastName: "B." },
  162. ... orderedItems: [
  163. ... { name: "itemE", qty: 5},
  164. ... { name: "itemG", qty: 3} ]
  165. ... }])
  166. BulkWriteResult({
  167. "writeErrors" : [ ],
  168. "writeConcernErrors" : [ ],
  169. "nInserted" : 7,
  170. "nUpserted" : 0,
  171. "nMatched" : 0,
  172. "nModified" : 0,
  173. "nRemoved" : 0,
  174. "upserted" : [ ]
  175. })
  176.  
  177. > db.stock.insert([
  178. ... { item: "itemA", qty: 15},
  179. ... { item: "itemB", qty: 15},
  180. ... { item: "itemC", qty: 15},
  181. ... { item: "itemD", qty: 15},
  182. ... { item: "itemE", qty: 15},
  183. ... { item: "itemF", qty: 15},
  184. ... { item: "itemG", qty: 15}])
  185. BulkWriteResult({
  186. "writeErrors" : [ ],
  187. "writeConcernErrors" : [ ],
  188. "nInserted" : 7,
  189. "nUpserted" : 0,
  190. "nMatched" : 0,
  191. "nModified" : 0,
  192. "nRemoved" : 0,
  193. "upserted" : [ ]
  194. })
  195.  
  196. //1. step
  197. db.orders.aggregate([
  198. {
  199. $unwind: "$orderedItems"
  200. },
  201. {
  202. $group:
  203. {
  204. _id:"$orderedItems.name",
  205. required:{$sum:"$orderedItems.qty"}
  206. }
  207. },
  208. {
  209. $lookup:
  210. {
  211. from:"stock",
  212. localField:"_id",
  213. foreignField:"item",
  214. as: "supply"
  215. }
  216. },
  217. $project:
  218. {
  219. _id: 0,
  220. item:"$_id",
  221. missing:
  222. {
  223. $let:
  224. {
  225. vars:
  226. {
  227. sup:
  228. {
  229. $arrayElemAt:["$supply",0]
  230. }
  231. }
  232. in:
  233. {
  234. //JEST NA TEL
  235. }
  236. }
  237. }
  238. }
  239. ])
  240.  
  241.  
  242.  
  243.  
  244. //2. ste[
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement