Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- https://docs.mongodb.com/manual/reference/operator/aggregation-pipeline/
- $match
- $unwind
- $group
- $lookup
- $count
- db.packages.insertMany([
- {
- name: "Package no. 2534",
- destination: "Alabama",
- items: [
- {name: "watch", type: "electronic", quantity: 6},
- {name: "baseball bat", type: "carpentry", quantity: 8},
- {name: "basil", type: "plant", quantity: 3}
- ]
- },
- {
- name: "Package no. 1",
- items: [
- {name: "handheld", type: "electronic", quantity: 8},
- ]
- },
- {
- name: "Packie",
- items: [
- {name: "Maybach", type: "car", quantity: 1},
- {name: "pitching machine", type: "electromechanical", quantity: 5},
- {name: "dasy", type: "plant", quantity: 401}
- ]
- },
- {
- name: "Big Box",
- items: [
- {name: "bath tub", type: "home appliance", quantity: 600},
- {name: "AC unit", type: "electric", quantity: 8645},
- {name: "football", type: "sport accesory", quantity: 34673}
- ]
- }
- ]}
- //pakiety bez destination
- db.packages.find({destination:{$exists:false}})
- //
- > db.packages.find({destination:{$exists:0},"items.type":{$in:["electric", "electronic", "electromechanical"]}})
- // items: quantity is divisible by 4
- > db.packages.find( { "items.quantity": { $mod: [ 4, 0 ] } } ).pretty()
- //
- db.packages.find({destination:{$exists:0},"items.type":{$in:["electric", "electronic", "electromechanical"]}}{"items.name"})
- //bez id i z nazwa tylko
- > db.packages.find({destination:{$exists:0},"items.type":{$in:["electric", "electronic", "electromechanical"]}},{"_id":0,name:1})
- { "name" : "Package no. 1" }
- { "name" : "Packie" }
- { "name" : "Big Box" }
- > db.inventory.updateMany({type:"other"}, {$set:{type:"other type"}, $inc:{quantity:1 }})
- { "acknowledged" : true, "matchedCount" : 2, "modifiedCount" : 2 }
- >
- >
- >
- >
- >
- >
- >
- >
- >
- > db.inventory.deleteMany({})
- { "acknowledged" : true, "deletedCount" : 6 }
- > db.packgages.deleteMany({})
- { "acknowledged" : true, "deletedCount" : 0 }
- > db.sillinesses.insertMany([
- ... {
- ... silly: "steps",
- ... bob: ["marley", "harley", "builder"],
- ... coolness: 10.01
- ... },
- ... {
- ... silly: "faces",
- ... bob: ["bip", "pob", "goose", "smoose"],
- ... coolness: 9.99
- ... },
- ... {
- ... silly: "ideas",
- ... bob: ["president", "minister", "senator", "congresman"],
- ... coolness: -1000
- ... },
- ... {
- ... silly: "hats",
- ... bob: ["bean", "bread", "buffet", "barbeque"],
- ... coolness: 11.3
- ... }])
- //za punkty:
- db.sillinesses.deleteMany({$and: [{bob: {$size:4}}, {coolness:{$gt:10}}]})
- //final task:
- > db.orders.insert([
- ... {
- ... client: {
- ... firstName: "John",
- ... lastName: "Smith" },
- ... orderedItems: [
- ... { name: "itemA", qty: 5},
- ... { name: "itemS", qty: 3} ]
- ... },
- ... {
- ... client: {
- ... firstName: "John",
- ... lastName: "Jacobie" },
- ... orderedItems: [
- ... { name: "itemA", qty: 2},
- ... { name: "itemB", qty: 4} ]
- ... },
- ... {
- ... client: {
- ... firstName: "BOb",
- ... lastName: "Smith" },
- ... orderedItems: [
- ... { name: "itemC", qty: 5},
- ... { name: "itemD", qty: 7} ]
- ... },
- ... {
- ... client: {
- ... firstName: "John",
- ... lastName: "Scott" },
- ... orderedItems: [
- ... { name: "itemA", qty: 1},
- ... { name: "itemD", qty: 3} ]
- ... },
- ... {
- ... client: {
- ... firstName: "Scot",
- ... lastName: "John" },
- ... orderedItems: [
- ... { name: "itemF", qty: 2},
- ... { name: "itemE", qty: 8} ]
- ... },
- ... {
- ... client: {
- ... firstName: "John",
- ... lastName: "Scatman" },
- ... orderedItems: [
- ... { name: "itemF", qty: 13},
- ... { name: "itemG", qty: 28} ]
- ... },
- ... {
- ... client: {
- ... firstName: "Johny",
- ... lastName: "B." },
- ... orderedItems: [
- ... { name: "itemE", qty: 5},
- ... { name: "itemG", qty: 3} ]
- ... }])
- BulkWriteResult({
- "writeErrors" : [ ],
- "writeConcernErrors" : [ ],
- "nInserted" : 7,
- "nUpserted" : 0,
- "nMatched" : 0,
- "nModified" : 0,
- "nRemoved" : 0,
- "upserted" : [ ]
- })
- > db.stock.insert([
- ... { item: "itemA", qty: 15},
- ... { item: "itemB", qty: 15},
- ... { item: "itemC", qty: 15},
- ... { item: "itemD", qty: 15},
- ... { item: "itemE", qty: 15},
- ... { item: "itemF", qty: 15},
- ... { item: "itemG", qty: 15}])
- BulkWriteResult({
- "writeErrors" : [ ],
- "writeConcernErrors" : [ ],
- "nInserted" : 7,
- "nUpserted" : 0,
- "nMatched" : 0,
- "nModified" : 0,
- "nRemoved" : 0,
- "upserted" : [ ]
- })
- //1. step
- db.orders.aggregate([
- {
- $unwind: "$orderedItems"
- },
- {
- $group:
- {
- _id:"$orderedItems.name",
- required:{$sum:"$orderedItems.qty"}
- }
- },
- {
- $lookup:
- {
- from:"stock",
- localField:"_id",
- foreignField:"item",
- as: "supply"
- }
- },
- $project:
- {
- _id: 0,
- item:"$_id",
- missing:
- {
- $let:
- {
- vars:
- {
- sup:
- {
- $arrayElemAt:["$supply",0]
- }
- }
- in:
- {
- //JEST NA TEL
- }
- }
- }
- }
- ])
- //2. ste[
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement