Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.63 KB | None | 0 0
  1. EMBEDDING AND REFERENCING EXAMPLES:
  2. situation: we have a collection of stores. Those stores have some items in offer. We also have sales in those stores (persons buying).
  3.  
  4. store {
  5. name: "...",
  6. address: "...",
  7. items:[item_id*]
  8. }
  9.  
  10. items {
  11. id: ...,
  12. name: ...,
  13. price: ...
  14. }
  15.  
  16. sales {
  17. name: ...,
  18. person_id: ...,
  19. items:[{item_id:"...", name:..., price:...},...]
  20. store:"store_name"
  21. }
  22.  
  23. // cmd
  24.  
  25. ./mongod
  26. mkdir
  27. ./mongod -dbpath dbdata
  28.  
  29. //new cmd
  30. .\mongo
  31. > db.getCollectionNames()
  32. > db.createCollection("AAA")
  33. { "ok" : 1 }
  34. > db.test.insert({tekstowy:"document"})
  35. WriteResult({ "nInserted" : 1 })
  36. > db.getCollectionNames()
  37. [ "AAA", "test" ]
  38. > db.AAA.drop()
  39. true
  40. > show dbs
  41. admin 0.000GB
  42. config 0.000GB
  43. local 0.000GB
  44. test 0.000GB
  45. > use local
  46. switched to db local
  47. > db.getCollectionNames()
  48. [ "startup_log" ]
  49. > use test
  50. switched to db test
  51. //2 te same
  52. > db.test.insert({testowy:"dokument"})
  53. WriteResult({ "nInserted" : 1 })
  54. > db.test.insert({testowy:"dokument"})
  55. WriteResult({ "nInserted" : 1 })
  56. > db.test.find()
  57. { "_id" : ObjectId("5dcd5f188a30ed9789e14cec"), "tekstowy" : "document" }
  58. { "_id" : ObjectId("5dcd60558a30ed9789e14ced"), "testowy" : "dokument" }
  59. { "_id" : ObjectId("5dcd60568a30ed9789e14cee"), "testowy" : "dokument" }
  60.  
  61. > db.test.insert({"_id":1, test:2})
  62. WriteResult({ "nInserted" : 1 })
  63. > db.test.find()
  64. { "_id" : ObjectId("5dcd5f188a30ed9789e14cec"), "tekstowy" : "document" }
  65. { "_id" : ObjectId("5dcd60558a30ed9789e14ced"), "testowy" : "dokument" }
  66. { "_id" : ObjectId("5dcd60568a30ed9789e14cee"), "testowy" : "dokument" }
  67. { "_id" : 1, "test" : 2 }
  68.  
  69. //duplicate key
  70. > db.test.insert({"_id":1, test:3})
  71. WriteResult({
  72. "nInserted" : 0,
  73. "writeError" : {
  74. "code" : 11000,
  75. "errmsg" : "E11000 duplicate key error collection: test.test index: _id_ dup key: { _id: 1.0 }"
  76. }
  77. })
  78.  
  79. > db.test.insert({
  80. ... name:"Anthony",
  81. ... surname:"Smith",
  82. ... age: 13,
  83. ... address: {
  84. ... street: "Queen's road",
  85. ... number: 15,
  86. ... "zip-code": "45-236"
  87. ... },
  88. ... phones: [ "423-453-4534", "222-222-2222" ],
  89. ... asspcoates: [{name: "Bart", surname: "Smith"}, {name: "Joan", surname: "Bean"}]
  90. ... })
  91. WriteResult({ "nInserted" : 1 })
  92.  
  93. > db.test.deleteMany({})
  94. { "acknowledged" : true, "deletedCount" : 5 }
  95.  
  96. > db.test.find().pretty()
  97. {
  98. "_id" : ObjectId("5dcd63178a30ed9789e14cf0"),
  99. "name" : "Anthony",
  100. "surname" : "Smith",
  101. "age" : 13,
  102. "address" : {
  103. "street" : "Queen's road",
  104. "number" : 15,
  105. "zip-code" : "45-236"
  106. },
  107. "phones" : [
  108. "423-453-4534",
  109. "222-222-2222"
  110. ],
  111. "asspcoates" : [
  112. {
  113. "name" : "Bart",
  114. "surname" : "Smith"
  115. },
  116. {
  117. "name" : "Joan",
  118. "surname" : "Bean"
  119. }
  120. ]
  121. }
  122.  
  123. > db.test.insertMany([{}.{}.{}])
  124. > db.test.find().pretty()
  125.  
  126. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf5"), "name" : "Abe", "surname" : "Kendricks" }
  127. > db.test.find({age:47}, {name:1, surname:1})
  128.  
  129. > db.test.find({age:47}, {"_id":0, name:1, surname:1})
  130. { "name" : "Abe", "surname" : "Kendricks" }
  131.  
  132. > db.test.find({age: {$gte:40}}, {"_id":0, name:1, surname:1, age:1})
  133. { "name" : "Bart", "surname" : "Smith", "age" : 52 }
  134. { "name" : "Joan", "surname" : "Bean", "age" : 43 }
  135. { "name" : "Abe", "surname" : "Kendricks", "age" : 47 }
  136.  
  137. > db.test.find({age: {$gte:40}, surname:"Smith"}, {"_id":0, name:1, surname:1, age:1})
  138. { "name" : "Bart", "surname" : "Smith", "age" : 52 }
  139.  
  140. > db.test.find({age: {$gte:40, $lte:50}}, {"_id":0, name:1, surname:1, age:1})
  141. { "name" : "Joan", "surname" : "Bean", "age" : 43 }
  142. { "name" : "Abe", "surname" : "Kendricks", "age" : 47 }
  143.  
  144. > db.test.find({address:{street:"Queen's road", number:15, "zip-code":"45-236"}})
  145. { "_id" : ObjectId("5dcd63178a30ed9789e14cf0"), "name" : "Anthony", "surname" : "Smith", "age" : 13, "address" : { "street" : "Queen's road", "number" : 15, "zip-code" : "45-236" }, "phones" : [ "423-453-4534", "222-222-2222" ], "asspcoates" : [ { "name" : "Bart", "surname" : "Smith" }, { "name" : "Joan", "surname" : "Bean" } ] }
  146. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf2"), "name" : "Joan", "surname" : "Bean", "age" : 43, "address" : { "street" : "Queen's road", "number" : 15, "zip-code" : "45-236" }, "phones" : [ "123-456-7890", "222-222-2222", "423-453-4534" ], "associates" : [ { "surname" : "Smith", "name" : "Anthony" }, { "name" : "Jonny", "surname" : "Bean" } ], "marks" : null }
  147.  
  148.  
  149. //nie dziala
  150. > db.test.find({address:{street:"Queen's road", number:15, "zip-code":"45-236"}})
  151. > db.test.find({address:{"zip-code": "35-236", street:"Queen's road", number:15}}).pretty()
  152.  
  153. //dziala
  154. > db.test.find({"address.zip-code":"45-236"})
  155. > db.test.find({"address.street":"Queen's road"})
  156.  
  157. // znajdz dokumenty, ktore maja dokladnie te numery w tej kolejnosci
  158. > db.test.find({phones:["423-453-4534", "222-222-2222"]})
  159. { "_id" : ObjectId("5dcd63178a30ed9789e14cf0"), "name" : "Anthony", "surname" : "Smith", "age" : 13, "address" : { "street" : "Queen's road", "number" : 15, "zip-code" : "45-236" }, "phones" : [ "423-453-4534", "222-222-2222" ], "asspcoates" : [ { "name" : "Bart", "surname" : "Smith" }, { "name" : "Joan", "surname" : "Bean" } ] }
  160.  
  161. // znajdz dokumenty w ktorych sa te 2 numery w ogole
  162. > db.test.find({phones:{$all:["423-453-4534", "222-222-2222"]}})
  163. { "_id" : ObjectId("5dcd63178a30ed9789e14cf0"), "name" : "Anthony", "surname" : "Smith", "age" : 13, "address" : { "street" : "Queen's road", "number" : 15, "zip-code" : "45-236" }, "phones" : [ "423-453-4534", "222-222-2222" ], "asspcoates" : [ { "name" : "Bart", "surname" : "Smith" }, { "name" : "Joan", "surname" : "Bean" } ] }
  164. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf2"), "name" : "Joan", "surname" : "Bean", "age" : 43, "address" : { "street" : "Queen's road", "number" : 15, "zip-code" : "45-236" }, "phones" : [ "123-456-7890", "222-222-2222", "423-453-4534" ], "associates" : [ { "surname" : "Smith", "name" : "Anthony" }, { "name" : "Jonny", "surname" : "Bean" } ], "marks" : null }
  165.  
  166. > db.test.find({phones:"222-222-2222"})
  167. { "_id" : ObjectId("5dcd63178a30ed9789e14cf0"), "name" : "Anthony", "surname" : "Smith", "age" : 13, "address" : { "street" : "Queen's road", "number" : 15, "zip-code" : "45-236" }, "phones" : [ "423-453-4534", "222-222-2222" ], "asspcoates" : [ { "name" : "Bart", "surname" : "Smith" }, { "name" : "Joan", "surname" : "Bean" } ] }
  168. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf2"), "name" : "Joan", "surname" : "Bean", "age" : 43, "address" : { "street" : "Queen's road", "number" : 15, "zip-code" : "45-236" }, "phones" : [ "123-456-7890", "222-222-2222", "423-453-4534" ], "associates" : [ { "surname" : "Smith", "name" : "Anthony" }, { "name" : "Jonny", "surname" : "Bean" } ], "marks" : null }
  169.  
  170. > db.test.find({phones:["222-222-2222"]})
  171. >
  172.  
  173. > db.test.find({marks: {$gt:4}})
  174. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf3"), "name" : "Jonny", "surname" : "Bean", "age" : 23, "address" : { "street" : "Mulholand drive", "number" : 5, "zip-code" : "45-236" }, "phones" : [ "423-453-4534", "999-342-2344" ], "associates" : [ { "name" : "All", "surname" : "o'Brian" }, { "name" : "Joan", "surname" : "Bean" } ], "marks" : [ 1, 3, 7, 8 ] }
  175. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf4"), "name" : "Burt", "surname" : "O'Donnel", "age" : 39, "address" : { "street" : "Dunno ally", "number" : 13, "zip-code" : "11-435" }, "phones" : [ "543-546-5355", "111-111-1111" ], "associates" : [ { "name" : "Kathy", "surname" : "Jenkins" } ], "marks" : [ 4, 5 ] }
  176.  
  177. //zle:
  178. > db.test.find({marks: {$gte:4, $lte:6}})
  179. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf3"), "name" : "Jonny", "surname" : "Bean", "age" : 23, "address" : { "street" : "Mulholand drive", "number" : 5, "zip-code" : "45-236" }, "phones" : [ "423-453-4534", "999-342-2344" ], "associates" : [ { "name" : "All", "surname" : "o'Brian" }, { "name" : "Joan", "surname" : "Bean" } ], "marks" : [ 1, 3, 7, 8 ] }
  180. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf4"), "name" : "Burt", "surname" : "O'Donnel", "age" : 39, "address" : { "street" : "Dunno ally", "number" : 13, "zip-code" : "11-435" }, "phones" : [ "543-546-5355", "111-111-1111" ], "associates" : [ { "name" : "Kathy", "surname" : "Jenkins" } ], "marks" : [ 4, 5 ] }
  181.  
  182. //lepiej:
  183. > db.test.find({marks: {$gte:4, $lte:6}},{"marks.$":1})
  184. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf3"), "marks" : [ 7 ] }
  185. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf4"), "marks" : [ 4 ] }
  186.  
  187. //dobrze
  188. > db.test.find({marks: {$elemMatch: {$gte:4,$lte:6}}} )
  189. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf4"), "name" : "Burt", "surname" : "O'Donnel", "age" : 39, "address" : { "street" : "Dunno ally", "number" : 13, "zip-code" : "11-435" }, "phones" : [ "543-546-5355", "111-111-1111" ], "associates" : [ { "name" : "Kathy", "surname" : "Jenkins" } ], "marks" : [ 4, 5 ] }
  190.  
  191. //nie ma ocen
  192. > db.test.find({$or: [{marks: {$size:0}}]})
  193. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf5"), "name" : "Abe", "surname" : "Kendricks", "age" : 47, "address" : { "street" : "King's highway", "number" : 1, "zip-code" : "98-435" }, "phones" : [ "774-425-4324", "554-542-8997" ], "associates" : [ { "name" : "Joan", "surname" : "Black" }, { "name" : "Patty", "surname" : "Fuller" } ], "marks" : [ ] }
  194.  
  195. > db.test.find({$or: [{marks: {$size:0}}, {marks:null}]}, {marks:1})
  196. { "_id" : ObjectId("5dcd63178a30ed9789e14cf0") }
  197. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf1") }
  198. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf2"), "marks" : null }
  199. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf5"), "marks" : [ ] }
  200.  
  201. // maja oceny
  202. > db.test.find({$nor: [{marks: {$size:0}}, {marks:null}]}, {marks:1})
  203. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf3"), "marks" : [ 1, 3, 7, 8 ] }
  204. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf4"), "marks" : [ 4, 5 ] }
  205.  
  206. //oceny nie sa nullami
  207. > db.test.find({marks: {$not:{$type:10}}}, {marks:1})
  208. { "_id" : ObjectId("5dcd63178a30ed9789e14cf0") }
  209. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf1") }
  210. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf3"), "marks" : [ 1, 3, 7, 8 ] }
  211. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf4"), "marks" : [ 4, 5 ] }
  212. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf5"), "marks" : [ ] }
  213.  
  214. // nie ma ocen
  215. > db.test.find({marks: {$exists: false}}, {marks:1})
  216. { "_id" : ObjectId("5dcd63178a30ed9789e14cf0") }
  217. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf1") }
  218.  
  219. > db.test.find({associates:{name:"Anthony", surname:"Smith"}},{associates:1})
  220. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf1"), "associates" : [ { "name" : "Anthony", "surname" : "Smith" }, { "name" : "Joan", "surname" : "Bean" } ] }
  221.  
  222. > db.test.find({"associates.name":"Anthony", "associates.surname":"Smith"},{associates:1})
  223. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf1"), "associates" : [ { "name" : "Anthony", "surname" : "Smith" }, { "name" : "Joan", "surname" : "Bean" } ] }
  224. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf2"), "associates" : [ { "surname" : "Smith", "name" : "Anthony" }, { "name" : "Jonny", "surname" : "Bean" } ] }
  225.  
  226. > db.test.find({associates:{$elemMatch:{name:"Anthony", surname: "Smith"}}},{associates:1})
  227. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf1"), "associates" : [ { "name" : "Anthony", "surname" : "Smith" }, { "name" : "Joan", "surname" : "Bean" } ] }
  228. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf2"), "associates" : [ { "surname" : "Smith", "name" : "Anthony" }, { "name" : "Jonny", "surname" : "Bean" } ] }
  229.  
  230. //replace
  231. > db.test.replaceOne({name:"Anthony"}, {name:"AntonyNowy"})
  232.  
  233.  
  234. > db.test.deleteOne({name:"AntonyNowy"})
  235. { "acknowledged" : true, "deletedCount" : 1 }
  236.  
  237. //update
  238. > db.test.updateOne({name: "Anthony"}, {$set: {name:"Antony"}})
  239. //poprawa associatesów
  240. //nie dziala
  241. > db.test.updateOne({"associates.name":"Anthony"}, {$set: {"associates.name":"Antony"}})
  242. //dziala z jednym
  243. > db.test.updateOne({"associates.name":"Anthony"}, {$set: {"associates.$.name":"Antony"}})
  244. //dziala z wieloma
  245. > db.test.updateOne({"associates.name":"Anthony"}, {$set: {"associates.$[].name":"Antony"}})
  246.  
  247. //zwiekszenie wieku wszystich o 1
  248. > db.test.updateMany({},{$inc:{age:1}})
  249. { "acknowledged" : true, "matchedCount" : 5, "modifiedCount" : 5 }
  250.  
  251. //wszystkie <30 będą równe 30
  252. > db.test.updateMany({},{$max:{age:30}})
  253. { "acknowledged" : true, "matchedCount" : 5, "modifiedCount" : 1 }
  254. > db.test.find({},{age:1})
  255. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf1"), "age" : 53 }
  256. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf2"), "age" : 44 }
  257. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf3"), "age" : 30 }
  258. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf4"), "age" : 40 }
  259. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf5"), "age" : 48 }
  260.  
  261. //dodaj oceny 5 i 7
  262. > db.test.updateMany({marks:{$exists:true, $type:4}},{$push:{marks:{$each:[5,7]}}})
  263. { "acknowledged" : true, "matchedCount" : 3, "modifiedCount" : 3 }
  264. > db.test.find({},{marks:1})
  265. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf1") }
  266. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf2"), "marks" : null }
  267. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf3"), "marks" : [ 1, 3, 7, 8, 5, 7 ] }
  268. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf4"), "marks" : [ 4, 5, 5, 7 ] }
  269. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf5"), "marks" : [ 5, 7 ] }
  270.  
  271. //usun oceny
  272. > db.test.updateMany({},{$unset:{marks:null}})
  273. { "acknowledged" : true, "matchedCount" : 5, "modifiedCount" : 4 }
  274. > db.test.find({},{marks:1})
  275. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf1") }
  276. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf2") }
  277. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf3") }
  278. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf4") }
  279. { "_id" : ObjectId("5dcd63b08a30ed9789e14cf5") }
  280.  
  281. //usuniecie wszystkiego
  282. > db.test.deleteMany({})
  283. { "acknowledged" : true, "deletedCount" : 5 }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement