2.1 рдЬрд╛рд░реА рдХрд░рдиреЗ рдореЗрдВ, рдирдП рдбреЗрдЯрд╛ рдПрдХрддреНрд░реАрдХрд░рдг рдврд╛рдВрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдРрд╕реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛
рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА
рдШреЛрд╖рдгрд╛ рдХреА рдЧрдИ рдереА ред рдореИрдВ рдЗрд╕ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдХреЗ рдкрд╣рд▓реЗ рдЫрд╛рдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдореИрдк / рд░рд┐рдбреНрдпреВрд╕ рдХреЛ рддреНрдпрд╛рдЧрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рд▓рдЧрднрдЧ SQL рдореЗрдВ рд╕рдореВрд╣ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдХрд╛рдлреА рд╕рд░рд▓ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдкрд░ рдкреНрд░рд▓реЗрдЦрди рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ
рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреМрди рд╕реЗ MongoDB рдирд┐рд░реНрдорд╛рдг рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдВрдЧреЗред
рддреЛ, MongoDB рд╕реЗ рдбреЗрдЯрд╛ рд▓рд╛рдиреЗ рдореЗрдВ рдореБрдЦреНрдп рдХрдард┐рдирд╛рдИ рдХреБрдЫ рдЕрд▓рдЧ рддрддреНрд╡реЛрдВ рдХреЗ рдЕрдВрджрд░ рдирд┐рд╣рд┐рдд рд╕рд░рдгрд┐рдпреЛрдВ рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИред рд╣рд╛рдБ, рд╣рдо рдЙрдиреНрд╣реЗрдВ рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рд╕реАрдзреЗ рд▓рд╛рдиреЗ рдкрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХрддреНрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдирдпрд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдРрд╕реЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рддрд░реАрдХрд╛ рд╣реИ, рдЬреЛ рд╡рд┐рд╢реЗрд╖ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ (рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ 7 рд╣реИрдВ)ред рдирдореВрдирд╛ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдСрдкрд░реЗрдЯрд░ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рджреВрд╕рд░реЗ рдХреЗ рдЗрдирдкреБрдЯ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдпреВрдирд┐рдХреНрд╕ рдореЗрдВред рдирдП рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рдорджрдж рд╕реЗ, рдЖрдк рдореМрдЬреВрджрд╛ рд▓реЛрдЧреЛрдВ рдХреЛ рджреЛрд╣рд░рд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЛрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реЛрдиреЗ рджреЗрдВред рдорд╛рдирдХ рдирдореВрдирд╛:
db.test.find({name: "Ivan"});
рд╕рдорд╛рди рд╣реЛрдЧрд╛
db.test.aggregate({$match: {name: "Ivan"}});
рд▓реЗрдХрд┐рди рд╕рдм рдереЛрдбрд╝рд╛ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рджреВрд╕рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣рдо рдПрдХ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдХреЗ рд╕рд╛рде рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЪреЗрди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред $ рд╕реЙрд░реНрдЯ рдСрдкрд░реЗрдЯрд░ рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
db.test.aggregate({$match: {name: "Ivan"}}, {$sort: {age: 1}});
рддреЛ рд╣рдо "рдЗрд╡рд╛рди" рдирд╛рдо рдХреЗ рд╕рд╛рде рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЛ рд╡реЗрдм рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдореНрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирдореВрдиреЗ рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рд╕рдмрд╕реЗ рдкреБрд░рд╛рдирд╛ рдЗрд╡рд╛рди рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рддрддреНрд╡ рдХреЗ рд╕рд╛рде рдЪрдпрди рдореЗрдВ рдХрдЯреМрддреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
db.test.aggregate({$match: {name: "Ivan"}}, {$sort: {age: -1}}, {$limit: 1});
рдЖрдк рдХрд╣реЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдореМрдЬреВрджрд╛ рдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛ рдХрд╛ рджреЛрд╣рд░рд╛рд╡ рд╣реИред рдХреБрдЫ рд╣рдж рддрдХ, рд╣рд╛рдБ, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдирдП рдСрдкрд░реЗрдЯрд░реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдирдореВрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рд╣рдо рдЙрдиреНрд╣реЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред
рдСрдкрд░реЗрдЯрд░ $ рдкрд░рд┐рдпреЛрдЬрдирд╛
рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛, рдирдП рд▓реЛрдЧреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреЗ рдЗрдирдкреБрдЯ рдкрд░ рдкреНрд░рд╛рдкреНрдд рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдореЗрдВ рдЙрдирдХрд╛ рдирд╛рдо рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреНрд░рд╡рд╛рд╣ (рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдирд╛рдо рдФрд░ рдЖрдпреБ) рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛:
{$project: {name: 1, age: 1}}
рдХреЗрд╡рд▓ рджреЛ рдлрд╝реАрд▓реНрдб рд╡рд╛рд▓реЗ рд╕рднреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЕрдЧрд▓реЗ рдСрдкрд░реЗрдЯрд░ рдХреЗ рдЗрдирдкреБрдЯ рдХреЛ рдорд┐рд▓реЗрдВрдЧреЗ, рдзрд╛рд░рд╛ рдореЗрдВ рдХреЛрдИ рдЕрдиреНрдп рдлрд╝реАрд▓реНрдб рдирд╣реАрдВ рд╣реЛрдЧрд╛ (рд╕рд┐рд╡рд╛рдп _id рдлрд╝реАрд▓реНрдб рдХреЗ, рдЗрд╕реЗ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ _id: 0 рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛)ред рдирдВрдмрд░ 1 рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдирдВрдмрд░ 0 рдХреНрд╖реЗрддреНрд░ рдХреЗ рдкреНрд░рд╕рд╛рд░рдг рдХреЛ рдмрд╛рд╣рд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдСрдкрд░реЗрдЯрд░ рдЖрдкрдХреЛ рдлрд╝реАрд▓реНрдбреНрд╕ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдлрд╝реАрд▓реНрдб рдХреЗ рдПрдореНрдмреЗрдбреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ "рдкреНрд░рд╛рдкреНрдд" рдХрд░реЗрдВ рдпрд╛ рдЕрдкрдиреА
рдЧрдгрдирд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирдП рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝реЗрдВред
$ рдЦреЛрд▓ рдСрдкрд░реЗрдЯрд░
рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдСрдкрд░реЗрдЯрд░ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рдЪрдпрди рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдиреЗрд╕реНрдЯреЗрдб рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ "рд╡рд┐рд╕реНрддрд╛рд░" рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рд▓реЛрдЧреЛрдВ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдзрд╛рд░ рд╣реИрдВ:
db.test.insert({name: "Ivan", likes: ["Maria", "Anna"]}); db.test.insert({name: "Serge", likes: ["Anna"]});
рд▓рд╛рдЗрдХ рдлреАрд▓реНрдб рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреМрди рд╕реА рд▓рдбрд╝рдХреА рдХреЛ рдХреМрди рд╕рд╛ рд▓рдбрд╝рдХрд╛ рдкрд╕рдВрдж рд╣реИред $ рдЦреЛрд▓ рдСрдкрд░реЗрдЯрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдВ:
db.test.aggregate({$unwind: "$likes"});
{ "result" : [ { "_id" : ObjectId("4f598de76a8f8bc74573e9fd"), "name" : "Ivan", "likes" : "Maria" }, { "_id" : ObjectId("4f598de76a8f8bc74573e9fd"), "name" : "Ivan", "likes" : "Anna" }, { "_id" : ObjectId("4f598e086a8f8bc74573e9fe"), "name" : "Serge", "likes" : "Anna" } ], "ok" : 1 }
рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдкрд╕рдВрдж рд╕рд░рдгреА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реБрдЖ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЕрдм рдкреНрд░рддреНрдпреЗрдХ рд╕рд░рдгреА рдорд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рдкрд╕рдВрдж рдлрд╝реАрд▓реНрдб рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рдерд╛ред рдпрджрд┐ рд╣рдо рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд▓рдбрд╝рдХреА рдХреЛ рдвреВрдВрдврдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЪрдпрди рдХреНрд╖реЗрддреНрд░ рдХреЛ рдкрд╕рдВрдж рдХрд░реЗрдВред рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
$ рд╕рдореВрд╣ рдСрдкрд░реЗрдЯрд░
рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирдВрдмрд░ 1 рд╕реЗ рднрд░реЗ рдПрдХ рдЕрдиреНрдп рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рд╛рде рдЪрдпрди рдХреЛ рдкреВрд░рдХ рдХрд░рддреЗ рд╣реИрдВ (рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛):
db.test.aggregate({$unwind: "$likes"}, {$project: {name:1, likes:1, count: {$add: [1]}}});
{ "result" : [ { "_id" : ObjectId("4f598de76a8f8bc74573e9fd"), "name" : "Ivan", "likes" : "Maria", "count" : 1 }, { "_id" : ObjectId("4f598de76a8f8bc74573e9fd"), "name" : "Ivan", "likes" : "Anna", "count" : 1 }, { "_id" : ObjectId("4f598e086a8f8bc74573e9fe"), "name" : "Serge", "likes" : "Anna", "count" : 1 } ], "ok" : 1 }
рдпрд╣ рд╣рдореЗрдВ $ рдпреЛрдЧ рдПрдХрддреНрд░реАрдХрд░рдг рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдпрд╣реА рд╣реИ, рдЕрдм рд╣рдо рд╣рд░ рдмрд╛рд░ рд╕рдВрдЦреНрдпрд╛ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдЧрд┐рдирддреА рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рди рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рд▓рдбрд╝рдХреА рдХреЗ рдирд╛рдо рд╡рд╛рд▓реЗ рдкрд╕рдВрдж рдлрд╝реАрд▓реНрдб рджреНрд╡рд╛рд░рд╛ рдкреВрд░реЗ рдирдореВрдиреЗ рдХреЛ рд╕рдореВрд╣рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
db.test.aggregate({$unwind: "$likes"}, {$project: {name:1, likes:1, count: {$add: [1]}}}, {$group: {_id: "$likes", number: {$sum: "$count"}}});
{ "result" : [ { "_id" : "Anna", "number" : 2 }, { "_id" : "Maria", "number" : 1 } ], "ok" : 1 }
рдпрд╣ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рддрдХ рдХреНрд░рдордмрджреНрдз рдФрд░ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ:
db.test.aggregate({$unwind: "$likes"}, {$project: {name:1, likes:1, count: {$add: [1]}}}, {$group: {_id: "$likes", number: {$sum: "$count"}}}, {$sort: {number: -1}}, {$limit: 1});
{ "result" : [ { "_id" : "Anna", "number" : 2 } ], "ok" : 1 }
рд╣рдорд╛рд░реА рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд▓рдбрд╝рдХреА рдЕрдиреНрдирд╛ рд╣реИред
рдФрд░ рдЕрдм рдПрдХ рдареЛрд╕ рдЙрджрд╛рд╣рд░рдг рд╣реИред
рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдирдП рдЕрд╡рд╕рд░реЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИ рдЬреЛ рдЪрд┐рдбрд╝рд┐рдпрд╛рдШрд░ рдореЗрдВ рдЬрд╛рдирд╡рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рдПрдХрддреНрд░реАрдХрд░рдг рдХреА рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рд╣рдорд╛рд░реЗ рдкрдВрдЬреЗ рдФрд░ рдкреВрдВрдЫ рд╣реИрдВ:
db.zoo.insert({name: "Lion", ration: [{meat: 20}, {fish: 1}, {water: 30}], holidays: [1,4], staff: {like: ["Petrovich", "Mihalich"], dislike: "Maria"}}); db.zoo.insert({name: "Tiger", ration: [{meat: 15}, {water: 25}], holidays: [6], staff: {like: ["Petrovich", "Maria"]}}); db.zoo.insert({name: "Monkey", ration: [{banana: 15}, {water: 10}, {nuts: 1}], holidays: [2], staff: {like: ["Anna"], dislike: "Petrovich"}}); db.zoo.insert({name: "Panda", ration: [{bamboo: 15}, {dumplings: 50}, {water: 3}], staff: {like: ["Petrovich", "Mihalich", "Maria", "Anna"]}});
рдирд╛рдо рдлрд╝реАрд▓реНрдб
рдирд╛рдо рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ,
рд░рд╛рд╢рди рдлрд╝реАрд▓реНрдб рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдПрдХ рд╕рд░рдгреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЬрд╛рдирд╡рд░ рдХреЛ рд╣рд░ рджрд┐рди рдХрд┐рддрдирд╛ рдФрд░ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рднреЛрдЬрди рдЪрд╛рд╣рд┐рдП,
рдЫреБрдЯреНрдЯрд┐рдпрд╛рдВ рд╡реЗ рджрд┐рди рд╣реИрдВ, рдЬрд┐рд╕ рджрд┐рди рдЬрд╛рдирд╡рд░ рдЖрд░рд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдЧрдВрддреБрдХреЛрдВ рдХреЛ рдирд╣реАрдВ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ,
рд╕реНрдЯрд╛рдлред рд╡реИрд╕реЗ рд╣реА рд╡реЗ
рдХрд░рд┐рдпрд░ рдирд┐рд░реНрдорд╛рддрд╛ рд╣реИрдВ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ (рдкрд╛рдВрдбрд╛, рдЖрдХрд░реНрд╖рдХ, рдкреНрдпрд╛рд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ ),
staff.dislike - рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИред
рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рдЪрдпрди рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ - рдмрд╕ рдЬрд╛рдирд╡рд░реЛрдВ рдХреЗ рдирд╛рдо, рддрд╛рдХрд┐ рдЪрд┐рдбрд╝рд┐рдпрд╛рдШрд░ рдХреЗ рдирд┐рджреЗрд╢рдХ рдпрд╣ рди рднреВрд▓реЗрдВ рдХрд┐ рдХрд┐рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ:
db.zoo.aggregate({$project: {name: 1}});
{ "result" : [ { "_id" : ObjectId("4f58b7f627f86b11258dc70c"), "name" : "Lion" }, { "_id" : ObjectId("4f58b86027f86b11258dc70d"), "name" : "Tiger" }, { "_id" : ObjectId("4f58b90c27f86b11258dc70e"), "name" : "Monkey" }, { "_id" : ObjectId("4f58b98727f86b11258dc70f"), "name" : "Panda" } ], "ok" : 1 }
рдЖрдкрдХреЛ рдХрд┐рд╕ рддрд░рд╣ рдХреЗ рдЬрд╛рдирд╡рд░реЛрдВ рдХреА рдЬрд░реВрд░рдд рд╣реИ?
рд╢рд┐рдХрд╛рд░рд┐рдпреЛрдВ рд╕реЗ рдбрд░рдирд╛ рдЬрд░реВрд░реА рд╣реИред рдПрдХ рд╢рд┐рдХрд╛рд░реА рд╡рд╣ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдЖрд╣рд╛рд░ рдореЗрдВ рдорд╛рдВрд╕ рд╣реЛрддрд╛ рд╣реИред рдЪрд▓реЛ рдЙрдиреНрд╣реЗрдВ рдвреВрдВрдврддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╕реНрдЯреНрд░реАрдо рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рдлрд╝реАрд▓реНрдб рдЪреБрдирддреЗ рд╣реИрдВ - рдирд╛рдо рдФрд░ рд░рд╛рд╢рдиред
db.zoo.aggregate({$project: {name: 1, _id: 0, ration: 1}});
{ "result" : [ { "name" : "Lion", "ration" : [ { "meat" : 20 }, { "fish" : 1 }, { "water" : 30 } ] }, { "name" : "Tiger", "ration" : [ { "meat" : 15 }, { "water" : 25 } ] }, { "name" : "Monkey", "ration" : [ { "banana" : 15 }, { "water" : 10 }, { "nuts" : 1 } ] }, { "name" : "Panda", "ration" : [ { "bamboo" : 15 }, { "dumplings" : 50 }, { "water" : 3 } ] } ], "ok" : 1 }
рдлрд┐рд░ рдореБрдЦреНрдп рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рд░рд╛рд╢рди рд╕рд░рдгреА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ:
db.zoo.aggregate({$project: {name: 1, _id: 0, ration: 1}}, {$unwind: "$ration"});
{ "result" : [ { "name" : "Lion", "ration" : { "meat" : 20 } }, { "name" : "Lion", "ration" : { "fish" : 1 } }, { "name" : "Lion", "ration" : { "water" : 30 } }, { "name" : "Tiger", "ration" : { "meat" : 15 } }, { "name" : "Tiger", "ration" : { "water" : 25 } }, { "name" : "Monkey", "ration" : { "banana" : 15 } }, { "name" : "Monkey", "ration" : { "water" : 10 } }, { "name" : "Monkey", "ration" : { "nuts" : 1 } }, { "name" : "Panda", "ration" : { "bamboo" : 15 } }, { "name" : "Panda", "ration" : { "dumplings" : 50 } }, { "name" : "Panda", "ration" : { "water" : 3 } } ], "ok" : 1 }
рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдХреЗрд╡рд▓ рдЙрди рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдЪрдпрди рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рдкрд░ рд░рд╛рд╢рди рдлрд╝реАрд▓реНрдб рд╣реИ
db.zoo.aggregate({$project: {name: 1, _id: 0, ration: 1}}, {$unwind: "$ration"}, {$match: {"ration.meat": {$exists: true}}});
{ "result" : [ { "name" : "Lion", "ration" : { "meat" : 20 } }, { "name" : "Tiger", "ration" : { "meat" : 15 } } ], "ok" : 1 }
рдФрд░ рдЕрдВрддрд┐рдо рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗрд╡рд▓ рд╢рд┐рдХрд╛рд░реА рдХрд╛ рдирд╛рдо рд╣реИ
db.zoo.aggregate({$project: {name: 1, _id: 0, ration: 1}}, {$unwind: "$ration"}, {$match: {"ration.meat": {$exists: true}}}, {$project: {name: 1, _id: 0}});
{ "result" : [ { "name" : "Lion" }, { "name" : "Tiger" } ], "ok" : 1 }
рдХреНрдпрд╛ рджрд┐рди рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЬрд╛рдирд╡рд░ рдЖрд░рд╛рдо рдХрд░рддрд╛ рд╣реИ
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЫреБрдЯреНрдЯрд┐рдпреЛрдВ рдХреЛ "рд╕реНрддрд░реАрдХреГрдд" рдХрд░реЗрдВ рдЬрд╛рдирд╡рд░реЛрдВ рдХреА рдкреВрд░реА рд╕рд░рдгреА рдореЗрдВ рд╕рд░рдгреА (рдкрд╛рдВрдбрд╛, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕реБрд▓рдн рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛)ред
db.zoo.aggregate({$project: {name: 1, holidays: 1}}, {$unwind: "$holidays"});
{ "result" : [ { "_id" : ObjectId("4f58b7f627f86b11258dc70c"), "name" : "Lion", "holidays" : 1 }, { "_id" : ObjectId("4f58b7f627f86b11258dc70c"), "name" : "Lion", "holidays" : 4 }, { "_id" : ObjectId("4f58b86027f86b11258dc70d"), "name" : "Tiger", "holidays" : 6 }, { "_id" : ObjectId("4f58b90c27f86b11258dc70e"), "name" : "Monkey", "holidays" : 2 }, { "_id" : ObjectId("4f58b98727f86b11258dc70f"), "name" : "Panda" } ], "ok" : 1 }
рдФрд░ рд╣рдо рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЫреБрдЯреНрдЯрд┐рдпреЛрдВ рдХрд╛ рдХреНрд╖реЗрддреНрд░ -1 рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ 0, рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ)
db.zoo.aggregate({$project: {name: 1, holidays: 1}}, {$unwind: "$holidays"},{$match: {holidays : {$gt: -1}}});
{ "result" : [ { "_id" : ObjectId("4f58b7f627f86b11258dc70c"), "name" : "Lion", "holidays" : 1 }, { "_id" : ObjectId("4f58b7f627f86b11258dc70c"), "name" : "Lion", "holidays" : 4 }, { "_id" : ObjectId("4f58b86027f86b11258dc70d"), "name" : "Tiger", "holidays" : 6 }, { "_id" : ObjectId("4f58b90c27f86b11258dc70e"), "name" : "Monkey", "holidays" : 2 } ], "ok" : 1 }
рд╣рдо рд╕рднреА рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВред
db.zoo.aggregate({$project: {name: 1, holidays: 1}}, {$unwind: "$holidays"},{$match: {holidays : {$gt: -1}}}, {$project: {holidays: 1, _id: 0}});
{ "result" : [ { "holidays" : 1 }, { "holidays" : 4 }, { "holidays" : 6 }, { "holidays" : 2 } ], "ok" : 1 }
рдкреНрд░рддрд┐ рджрд┐рди рдХрд┐рддрдиреЗ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рдЦрд░реАрджрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдХрд╛рд░реНрдпред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ $ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЦреЗрддреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреА рд╣реИ рдФрд░
рдорд╛рдВрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдПрдХ
рдорд╛рдВрд╕ рдХреНрд╖реЗрддреНрд░ рдмрдирд╛ рд╕рдХрддреА рд╣реИред
db.zoo.aggregate({$project: {ration: 1, _id: 0}}, {$unwind: "$ration"}, {$project: {ration: 1, meat: "$ration.meat", _id: 0}});
рдпрджрд┐ рдпрд╣ рдлрд╝реАрд▓реНрдб рдкрд╢реБ рдХреЗ рдЖрд╣рд╛рд░ рдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣рд╛рдБ рдПрдХ рдирдореВрдирд╛ рднрд╛рдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
{ "result" : [ { "ration" : { "meat" : 20 }, "meat" : 20 }, { "ration" : { "fish" : 1 } }, { "ration" : { "water" : 30 } }, ... }
рд╣рдо рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рднреЛрдЬрди рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд░рд╛рд╢рди рд╡рд╕реНрддреБ рдХрд╛ рдЙрддреНрдкрд╛рджрди рд╕реНрд╡рдпрдВ рдирд┐рдХрд╛рд▓ рджреЗрддреЗ рд╣реИрдВ:
db.zoo.aggregate({$project: {ration: 1}}, {$unwind: "$ration"}, {$project: {ration: 0, _id: 0, meat: "$ration.meat", fish: "$ration.fish", water: "$ration.water", banana: "$ration.banana", bamboo: "$ration.bamboo", nuts: "$ration.nuts", dumplings: "$ration.dumplings", _id: 0}});
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ
{ "result" : [ { "_id" : ObjectId("4f58e58227f86b11258dc713"), "meat" : 20 }, { "_id" : ObjectId("4f58e58227f86b11258dc713"), "fish" : 1 }, { "_id" : ObjectId("4f58e58227f86b11258dc713"), "water" : 30 }, { "_id" : ObjectId("4f58e5e127f86b11258dc714"), "meat" : 15 }, { "_id" : ObjectId("4f58e5e127f86b11258dc714"), "water" : 25 }, { "_id" : ObjectId("4f58e60027f86b11258dc715"), "banana" : 15 }, { "_id" : ObjectId("4f58e60027f86b11258dc715"), "water" : 10 }, { "_id" : ObjectId("4f58e60027f86b11258dc715"), "nuts" : 1 }, { "_id" : ObjectId("4f58e64a27f86b11258dc716"), "bamboo" : 15 }, { "_id" : ObjectId("4f58e64a27f86b11258dc716"), "dumplings" : 50 }, { "_id" : ObjectId("4f58e64a27f86b11258dc716"), "water" : 3 } ], "ok" : 1 }
рдпрд╣ рдХреЗрд╡рд▓ $ рд╕рдореВрд╣ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдкреВрд░реА рдЪреАрдЬрд╝ рдХреЛ рдЬреЛрдбрд╝рдиреЗ / рд╕рдореВрд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рд╕рдореВрд╣ рдореЗрдВ
_id рдлрд╝реАрд▓реНрдб рдХрд╛ рд╕рдВрдХреЗрдд рдпрд╣рд╛рдВ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдмрдХрд╡рд╛рд╕ рдХрд░рдиреЗ рджреЗрдВред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рднреЛрдЬрди рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдЬрд╛рдирд╡рд░ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрд╣рд╛рд░ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреБрдХреНрдд рдХреНрд╖реЗрддреНрд░ рдмрдирд╛рдПрдВ:
db.zoo.aggregate({$project: {ration: 1}}, {$unwind: "$ration"}, {$project: {ration: 0, _id: 0, meat: "$ration.meat", fish: "$ration.fish", water: "$ration.water", banana: "$ration.banana", bamboo: "$ration.bamboo", nuts: "$ration.nuts", dumplings: "$ration.dumplings"}}, {$group: {_id: "s", sum_meat: {$sum: "$meat"}, sum_fish: {$sum: "$fish"}, sum_water: {$sum: "$water"}, sum_banana: {$sum: "$banana"}, sum_nuts: {$sum: "$nuts"}, sum_bamboo: {$sum: "$bamboo"}, sum_dumplings: {$sum: "$dumplings"}}});
{ "result" : [ { "_id" : "s", "sum_meat" : 35, "sum_fish" : 1, "sum_water" : 68, "sum_banana" : 15, "sum_nuts" : 1, "sum_bamboo" : 15, "sum_dumplings" : 50 } ], "ok" : 1 }
рдкрд╕рдВрджреАрджрд╛ рдХреЗрдпрд░рдЯреЗрдХрд░
рдЦреЗрддреЛрдВ рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВ рдФрд░ рдХрд░реНрдордЪрд╛рд░реА рдХреЛ рдЦреЛрд▓ рджреЗрдВред
db.zoo.aggregate({$project: {name: 1, _id: 0, "staff.like": 1}}, {$unwind: "$staff.like"});
рд╣рдореЗрдВ рдпрд╛рдж рд╣реИ рдХрд┐ $ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдПрдХ рд╕реНрддрд░ рдКрдкрд░ рдЙрдард╛ рд╕рдХрддреА рд╣реИ:
db.zoo.aggregate({$project: {name: 1, _id: 0, "staff.like": 1}}, {$unwind: "$staff.like"}, {$project: {_id: 0, name: "$staff.like"}});
рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рд╕рднреА рджреЗрдЦрднрд╛рд▓рдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛, рдЬреЛ рдХрдо рд╕реЗ рдХрдо рдХрд┐рд╕реА рдХреЛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдИ рджреЛ рдЬрд╛рдирд╡рд░реЛрдВ рдХреЛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рджреЛ рдмрд╛рд░ рдирдореВрдиреЗ рдореЗрдВ рдореМрдЬреВрдж рд╣реИред
{ "result" : [ { "name" : "Petrovich" }, { "name" : "Mihalich" }, { "name" : "Petrovich" }, { "name" : "Maria" }, { "name" : "Anna" }, { "name" : "Petrovich" }, { "name" : "Mihalich" }, { "name" : "Maria" }, { "name" : "Anna" } ], "ok" : 1 }
рдЕрдм рдЖрдкрдХреЛ рдЗрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд░рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдВрдХреНрд╖реЗрдк рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдлрд╝реАрд▓реНрдб рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕ рдлрд╝реАрд▓реНрдб рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдЬреНрдЮрд╛рдд рдЪрд┐рдк рдХреЗ рд╕рд╛рде рдмрдирд╛рддреЗ рд╣реИрдВред
db.zoo.aggregate({$project: {name: 1, _id: 0, "staff.like": 1}}, {$unwind: "$staff.like"}, {$project: {_id: 0, name: "$staff.like", count: {$add: [1]}}});
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореВрд▓реНрдп 1 рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдЧрдгрдирд╛ рдлрд╝реАрд▓реНрдб рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рд╕рдореВрд╣ рдФрд░ рд╕рд╛рд░рд╛рдВрд╢рд┐рдд рдХрд░реЗрдВ:
db.zoo.aggregate({$project: {name: 1, _id: 0, "staff.like": 1}}, {$unwind: "$staff.like"}, {$project: {_id: 0, name: "$staff.like", count: {$add: [1]}}}, {$group: {_id: "$name", num: {$sum: "$count"}}});
рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ рдФрд░ рдмрд╣реБрдд рдкрд╣рд▓реЗ рддрддреНрд╡ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рд╕реАрдорд┐рдд рдХрд░реЗрдВ
db.zoo.aggregate({$project: {name: 1, _id: 0, "staff.like": 1}}, {$unwind: "$staff.like"}, {$project: {_id: 0, name: "$staff.like", count: {$add: [1]}}}, {$group: {_id: "$name", num: {$sum: "$count"}}}, {$sort: {num: -1}}, {$limit: 1});
рдФрд░ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд┐рд▓рддреЗ рд╣реИрдВ:
{ "result" : [ { "_id" : "Petrovich", "num" : 3 } ], "ok" : 1 }
рдмрд╕ рдЗрддрдирд╛ рд╣реАред рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рджреЛ рд╕рд░рд▓ рд░рд┐рдкреЛрд░реНрдЯ рд╣реИрдВ:
рдПрдХ рдФрд░
рджреЛ ред
рд╕рдЪ рдХрд╣реВрдБ рддреЛ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ MongoDB рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдордиреЗ рдЗрд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рд╣реА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдерд╛ред рд╡рд╣реА рдореИрдк / рд░рд┐рдбреНрдпреВрд╕ рдореЗрд░реЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдХреБрдЫ рдбрд░рд╛рд╡рдирд╛ рдФрд░ рдЕрд╕рдВрдЧрдд рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛ рдПрдХрддреНрд░реАрдХрд░рдг рдХреА рдирдИ рдЪреАрдЬ рдЖрдкрдХреЛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдФрд░ рдЗрд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП, рдФрд░ рдЗрд╕рд▓рд┐рдП рддреЗрдЬреА рд╕реЗ, рднрд╛рд╖рд╛ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВ ред
PS рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг 2.1 рдЕрднреА рднреА рдХрд╛рдлреА рдХрдЪреНрдЪрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрд╛рддрд╛рд░ рд╕рднреА рддрд░рд╣ рдХреЗ рдЕрдкрд╡рд╛рджреЛрдВ рдХреА рдкреБрд╖реНрдЯрд┐ рд╣реБрдИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 2.2 рдореЗрдВ рдпрд╣ рдЖрдЦрд┐рд░рдХрд╛рд░ рд╕реНрдерд┐рд░ рдФрд░ рдардВрдбрд╛ рд╣реЛрдЧрд╛ред