MongoDB: рдкрд░реНрд╡рддрдорд╛рд▓рд╛ рдкрд░ рдХреНрд╡реЗрд░реА рдкреНрд░рджрд░реНрд╢рди

рдпрджрд┐ рдЖрдкрдиреЗ MongoDB рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдпрд╛рддреНрд░рд╛ рдХреА рд╣реИ, рддреЛ рдЖрдкрдиреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд╕реБрдирд╛ рд╣реЛрдЧрд╛: рдпрджрд┐ рдЖрдкрдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рд╣реИ, рддреЛ рдЗрди рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдЕрдиреБрдХреНрд░рдо рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕реЙрд░реНрдЯ рдХрд┐рдП рдЧрдП рдлрд╝реАрд▓реНрдб рдХреЛ рдЬреЛрдбрд╝реЗрдВред

рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЬрдм рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ {"рдирд╛рдо": "рдЪрд╛рд░реНрд▓реА"} рдЬреИрд╕реА рд╕рдорд╛рдирддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИред рд▓реЗрдХрд┐рди рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдХреНрдпрд╛ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

: db.drivers.find({"country": {"$in": ["A", "G"]}).sort({"carsOwned": 1}) : {"country": 1, "carsOwned": 1} 

рдпрд╣ рдмрдВрдбрд▓ рдкреНрд░рднрд╛рд╡реА рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рд╕рдореНрдорд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдЬрд╛рд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╕рд┐рджреНрдзрд╛рдВрдд рдЖрдкрдХреЛ рд▓реЗ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдиреАрдЪреЗ рд╣рдо рдЗрд╕ рдЬрд╛рд▓ рдХреЗ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рддрдХ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдирдпрд╛ рдирд┐рдпрдо рд╣реЛрдЧрд╛ рдЬреЛ рдЖрдкрдХреЛ рдЕрдиреБрдХреНрд░рдордг рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░реЗрдЧрд╛ред

рдЪрд▓реЛ MongoDB рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдореВрд▓ рдмрд╛рддреЗрдВ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ:
* "рд╕реВрдЪрдХрд╛рдВрдХ рдЬрд▓реНрджреА"
рд╕реВрдЪрдХрд╛рдВрдХ рдбрд┐рдЬрд╛рдЗрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд╛рдпрдХ рд╣реИрдВред рдРрддрд┐рд╣рд╛рд╕рд┐рдХ, рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рд╕реНрддрд░ рдкрд░ рджрдХреНрд╖рддрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рд╢рд╛рд╕рдХ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджреА рдЧрдИ рдереА, рдЗрд╕рдиреЗ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рдмрд╛рдж рдПрдХ рдЕрдиреБрдХреВрд▓рди рдкрд░рдд рдмрдирд╛рдИред
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝-рдЙрдиреНрдореБрдЦ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде, рдЖрдк рдЗрд╕рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВред
* "рд╕реВрдЪрдХрд╛рдВрдХ рдЕрдХреНрд╕рд░"
рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреНрд╡реЗрд░реА рдЫреЛрдЯреЗ рдбреЗрдЯрд╛ рдкрд░ рднреА рдкрд░рд┐рдорд╛рдг рдХреЗ рдХрдИ рдЖрджреЗрд╢реЛрдВ рджреНрд╡рд╛рд░рд╛ рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИред рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рдмрд┐рдирд╛, рдПрдХ рдХреНрд╡реЗрд░реА рдореЗрдВ 10 рд╕реЗрдХрдВрдб рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╣реА рдХреНрд╡реЗрд░реА рд╕рдВрдмрдВрдзрд┐рдд рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде 0 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд▓реЗ рд╕рдХрддреА рд╣реИред
* "рд╕реВрдЪрдХрд╛рдВрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ"
рдХреНрд╡реЗрд░реАрдЬрд╝ рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВред рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдмрд╢рд░реНрддреЗ рдХрд┐ рд╕реВрдЪрдХрд╛рдВрдХ рдмрд┐рдирд╛ рдЧреИрдк рдХреЗ рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
* "рд╕реВрдЪрдХрд╛рдВрдХ рдЫрдБрдЯрд╛рдИ"
рдпрджрд┐ рдЖрдкрдХреА рдХреНрд╡реЗрд░реА рдореЗрдВ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рд╣реЛрдЧреА, рддреЛ рд╕реЙрд░реНрдЯ рдХрд┐рдП рдЧрдП рдлрд╝реАрд▓реНрдб рдХреЛ рдЕрдкрдиреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
* "рдЯреАрдореЗрдВ"
.explain () рджрд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
.ensureIndex () рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рддрд╛ рд╣реИред
.getIndexes () рдФрд░ .getIndexKeys () рджрд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреМрди рд╕реЗ рдЗрдВрдбреЗрдХреНрд╕ рд╣реИрдВред

рдЕрдм рд╡рд╛рдкрд╕ рд╣рдорд╛рд░реЗ рд╕рд╡рд╛рд▓ рдкрд░ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд╡реЗрд░реА рдХреЗ рд▓рд┐рдП, рдЕрдиреБрдХреНрд░рдордг рдХреА рдореВрд▓ рдмрд╛рддреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП:
 db.collection.find({"country": "A"}).sort({"carsOwned": 1}) 

рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛:
 db.collection.ensureIndex({"country": 1, "carsOwned": 1}) 

рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рд╛рд▓рдд рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░рд╢реНрди рддреБрд▓рдирд╛ рдХреЗ рдмрдЬрд╛рдп рд╕реАрдорд╛ рдЪрдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ? рдЗрд╕ рд░реВрдк рдореЗрдВ:
 db.collection.find({"country": {"$in": ["A", "G"]}}).sort({"carsOwned": 1}) 

рдпрд╣рд╛рдВ рд╣рдордиреЗ рдСрдкрд░реЗрдЯрд░ рдореЗрдВ $ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рднреА рд╣реИрдВ рдЬреИрд╕реЗ: $ gt, $ lt, рдЖрджрд┐ред
рдпрджрд┐ рдЖрдк рдПрдХ рд╕рдорд╛рди рдХреНрд╡реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдкреНрд░рднрд╛рд╡реА рдирд╣реАрдВ рд╣реИ, рдЬрдмрдХрд┐ рдЖрдкрдХреЛ рдореВрд▓ рдмрд╛рддреЗрдВ рдпрд╛рдж рд╣реИрдВ - рдЖрдкрдХреЛ .explain () рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХрд┐рд╕ рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХреИрд╕реЗред
рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк .explain () рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ {scanAndOrder: true}, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ MongoDB рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдСрдкрд░реЗрд╢рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдПрдХ рдорд╣рдВрдЧрд╛ рдСрдкрд░реЗрд╢рди рд╣реИ MongoDB рд╕реНрдореГрддрд┐ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рд╕реЗрдЯ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдзреАрдорд╛ рдФрд░ рд╕рдВрд╕рд╛рдзрди рдЧрд╣рди рд╣реИред

рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рд╕реНрдХреИрдирдПрдВрдбрдСрд░реНрдбрд░ рдзреАрдорд╛ рдХреНрдпреЛрдВ рд╣реИ, рдХреНрдпреЛрдВ рдореЛрдВрдЧреЛрдмреАрдбреА рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рднрд▓реЗ рд╣реА рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЫрдБрдЯрд╛рдИ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рд╣реЛ? рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рд╕рд░рд▓ рд╣реИ: рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЙрдкрдпреБрдХреНрдд рд╕реВрдЪрдХрд╛рдВрдХ рдирд╣реАрдВ рд╣реИред

рдХреНрдпреЛрдВ? рдХрд╛рд░рдг рд╕рд░рд▓ рд╣реИ, рдмрд┐рдВрджреБ рдЙрд╕ рдЗрдВрдбреЗрдХреНрд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдмрдирд╛рдпрд╛ рд╣реИред рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, {"рджреЗрд╢": "рдП"} рдФрд░ {"рджреЗрд╢": "рдЬреА"} рд╡рд╛рд▓реЗ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ {"carOwned": 1} рджреНрд╡рд╛рд░рд╛ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рд╡реЗ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЫрд╛рдВрдЯреЗ рдЬрд╛рддреЗ рд╣реИрдВред рд╡реЗ рдПрдХ рд╕рд╛рде рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ! рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЪрд╛рд░реНрдЯ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:



рдмрд╛рдпрд╛рдБ рдЖрд░реЗрдЦ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рджреНрд╡рд╛рд░рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рдХреНрд░реЙрд▓ рдХреНрд░рдо рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рд╕рднреА рджрд╕реНрддрд╛рд╡реЗрдЬ рдкрд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдиреНрд╣реЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рд╕рд╣реА рдЖрд░реЗрдЦ рдореЗрдВ, рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕реВрдЪрдХрд╛рдВрдХ {"CarsOwned": 1, "рджреЗрд╢": 1} рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд╛рдП рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реЙрд░реНрдЯ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
рджрдХреНрд╖рддрд╛ рдХреЗ рдЗрд╕ рд╕реВрдХреНрд╖реНрдо рдмрд┐рдВрджреБ рдиреЗ рдЕрдиреБрдХреНрд░рдордг рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рдпрдореЛрдВ рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд┐рдпрд╛:

рдЦреЗрддреЛрдВ рдХрд╛ рдХреНрд░рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
1. рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡реЗ рдХреНрд╖реЗрддреНрд░ рдЬреЛ рд╕рдЯреАрдХ рдорд╛рдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЪреБрдиреЗ рдЧрдП рд╣реИрдВред
2. рдЗрд╕рдХреЗ рдмрд╛рдж, рдЫрдБрдЯрд╛рдИ рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░ рдЬрд╛рдПрдВрдЧреЗред
3. рдФрд░ рд░реЗрдВрдЬ рдлрд┐рд▓реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЕрдВрдд рдореЗрдВред

рдХрд╛рд▓рдлрд╝рди
рдХреНрдпрд╛ рдХреЛрдИ рд╕рдордЭреМрддрд╛ рд╣реИ? рд╣рд╛рдВред рдЕрдиреБрд░реЛрдз рдХреЛ рдХрдИ рдЗрдВрдбреЗрдХреНрд╕ рдиреЛрдбреНрд╕ рджреНрд╡рд╛рд░рд╛ рджреМрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рддрдХрдиреАрдХреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЫрд╛рдВрдЯреЗ рдЧрдП рднрд╛рдЧ рдХреЛ рдЫрд╛рдирдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЯреНрд░реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдирдпрд╛ рдирд┐рдпрдо рдХрдИ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╢реБрджреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдЖрдкрдХреЗ рдбреЗрдЯрд╛ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддреА рд╣реИред

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХрд░рддреА рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╣реИред

Source: https://habr.com/ru/post/In147053/


All Articles