рдореЗрд░реА рдХрд┐рддрд╛рдм "рдореЛрдВрдЧреЛрдбреАрдмреА: рдж рдбреЗрдлрд┐рдирд┐рдЯрд┐рд╡ рдЧрд╛рдЗрдб" рдХреНрд░рд┐рд╕реНрдЯреАрдирд╛ рдЪреЛрдбреЛрд░реЛ рдФрд░ рдорд╛рдЗрдХрд▓ рдбреЗрд░реЛрд▓рдл рдХреЗ рдкрдврд╝рдиреЗ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рд╕рд╛рдордЧреНрд░реА рдХреА рдмреЗрд╣рддрд░ рдорд╣рд╛рд░рдд рдХреЗ рд▓рд┐рдП рдЕрдзреНрдпрд╛рдпреЛрдВ рд╕реЗ рдореБрдЦреНрдп рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╢рд╛рдпрдж рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред
рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ
MongoDB рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛ рдореВрд▓ рд╡рд┐рдзрд┐ рд╣реИред рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрд░реЗрдВ:
> db.foo.insert( { тАЬbarтАЭ : тАЬbazтАЭ } );
рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдЬрдм рдЖрдкрдХреЛ рдХрдИ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рддреЗрдЬреА рд╕реЗ рд╕рдореНрдорд┐рд▓рди рдХреЗ рд▓рд┐рдП рддрдерд╛рдХрдерд┐рдд рдмреИрдЪ рдЖрд╡реЗрд╖рдг (рд╕рдореВрд╣ рд╕рдореНрдорд┐рд▓рди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реЛрддрд╛ рд╣реИ
> db.foo.insert( { тАЬarrтАЭ : [ { a : 1 , b : 1 } , { a : 2 , b : 2 } ] } );
рдореЛрдЯреЗ рддреМрд░ рдкрд░, рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рд╕рд░рдгреА рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдирд┐рдХрд╛рд▓реЗрдВ
рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЗрд╕ рддрд░рд╣ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
> db.users.remove();
рдпрд╣ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╕реНрд╡рдпрдВ рдпрд╛ рдХрд┐рд╕реА рднреА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╕реЗ рдирд╣реАрдВ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред
рдЖрдк рдХреБрдЫ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
> db.users.remove( { тАЬnameтАЭ : тАЬVasyaтАЭ } );
рдирд┐рд╖реНрдХрд╛рд╕рди рдПрдХ рдХрд╛рдлреА рддреЗрдЬрд╝ рдСрдкрд░реЗрд╢рди рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдХрд┐рд╕реА рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЕрдХреНрд╕рд░ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╕реНрд╡рдпрдВ рд╣рдЯрд╛рдирд╛ (рдбреНрд░реЙрдк рдХрд░рдирд╛) рдФрд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛ рдЕрдзрд┐рдХ рддреЗрдЬрд╝ рд╣реЛрдЧрд╛ред
> db.drop_collection( тАЬbarтАЭ );
рдЕрджреНрдпрддрди
рд╕рдмрд╕реЗ рд╕рд░рд▓ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрджреНрдпрддрди рдорд┐рд▓рд╛рди рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╣реИред рдРрд╕рд╛ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдерд╛:
}
"_id" : ObjectId("4b2b9f67a1f631733d917a7a"),
"name" : "joe",
"age" : 18
}
рдЕрдЧрд░ рд╣рдо рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреВрд░реЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
> db.users.update( { тАЬnameтАЭ : тАЭjoeтАЭ } , { тАЬnameтАЭ : тАЬvasyaтАЭ } );
рдпрд╛рдиреА рд╣реЛрдЧрд╛
}
"_id" : ObjectId("4b2b9f67a1f631733d917a7a"),
"name" : "vasya"
}
рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рдмрд╛рдж, рдХреЗрд╡рд▓ рдкрд╣рд▓рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдмрд╣реБ-рдЕрдкрдбреЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдХрдо рд╣реЛрдЧрд╛ред
рд╕рдВрд╢реЛрдзрдХ
рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо $ inc рд╕рдВрд╢реЛрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЖрдпреБ рдХреЛ 2 рд╡рд░реНрд╖ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдпрд╣ рдХрд░рддреЗ рд╣реИрдВ:
> db.users.update( { name: тАЬjoeтАЭ } , { $inc : { age: 2 } } );
рдпрджрд┐ рдЖрдкрдХреЛ рдХреБрдЫ рдХреБрдВрдЬреА рдХрд╛ рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ $ рд╕реЗрдЯ рд╕рдВрд╢реЛрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
> db.users.update( { name:тАЭjoeтАЭ } , { $set: { age: 25 } } );
рд╡рд╣ рдЬреЛ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдвреВрдВрдврддрд╛ рд╣реИ рдФрд░ 25 рдХреА рдЙрдореНрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЕрдЧрд░ рдХреЛрдИ рдЙрдореНрд░ рдХреА рдХреБрдВрдЬреА рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рдХреБрдВрдЬреА рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдПрдХ $ unset рд╕рдВрд╢реЛрдзрдХ рд╣реИ
> db.users.update( { name: тАЭjoeтАЭ } , { $unset: { age : 1 } } );
рд╕рд░рдгреА рд╕рдВрд╢реЛрдзрдХ
рдЖрдк $ рдкреБрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░рдгреА рдореЗрдВ рдПрдХ рддрддреНрд╡ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдПрдХ рд╣реА рдЬреЛ рдЕрднреА рднреА рдЕрдкрдиреЗ рджреЛрд╕реНрддреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ, рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ:
}
"_id" : ObjectId("4b2b9f67a1f631733d917a7a"),
"name" : "joe",
"age" : 18,
тАЬfriendsтАЭ: [
{name: тАЬjohnтАЭ},
{name: тАЬhelenтАЭ}
]
}
рд╣рдо рджреЛрд╕реНрддреЛрдВ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рджреЛрд╕реНрдд рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
> db.users.update( { name: тАЬjoeтАЭ } , { $push: { friends: { name: тАЬpeterтАЭ } } } );
рдЗрд╕ рддрд░рд╣ рдХреА рдмрд╛рдд рдкреАрдЯрд░ рдХреЛ рдЬреЛрдП рдорд┐рддреНрд░ рд╕рд░рдгреА рдХреЗ рдЕрдВрдд рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдЧреАред
рдпрджрд┐ $ рдзрдХреНрдХрд╛ рд╣реИ, рддреЛ $ рдкреЙрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
> db.users.update( { name: тАЭjoeтАЭ } , { $pop: { friends: 1 } } );
рдпрд╣ рд╕рд░рдгреА рддрддреНрд╡ рдХреЛ рдЕрдВрдд рд╕реЗ рд╣рдЯрд╛ рджреЗрдЧрд╛, рдФрд░ рдпрд╣рд╛рдВ рдпрд╣ рд╢реБрд░реБрдЖрдд рд╕реЗ рд╣реИ
> db.users.update( { name: тАЭjoeтАЭ }, { $pop: { friends: -1 } } );
рдПрдХ рдЙрдкрдпреЛрдЧреА рдЪреАрдЬ $ рдПрдбрдЯреЛрдЯрд╕реЗрдЯ рднреА рд╣реИ - рдпрд╣ $ рдкреБрд╢ рдХреЗ рд╕рд╛рде рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрдХ рдХреЗ рд╕рд╛рдеред
рдХрднреА-рдХрднреА рдЖрдкрдХреЛ рдХреБрдЫ рдорд╛рдирджрдВрдб рджреНрд╡рд╛рд░рд╛ рд╕рд░рдгреА рддрддреНрд╡ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдлрд┐рд░ $ рдкреБрд▓ рд╕рдВрд╢реЛрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
> db.users.update( { }, { $pull: { friends: { name: тАЬjohnтАЭ } } } );
рдпрд╣ рдЬреЙрди рдХреЗ рджреЛрд╕реНрддреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛
рдкреЛрдЬрд┐рд╢рдирд▓ рдПрд░реЗ рдореЛрдбрд┐рдлрд╛рдпрд░реНрд╕
рдХрд┐рд╕реА рд╕рд░рдгреА рдореЗрдВ рдорд╛рдиреЛрдВ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ 2 рддрд░реАрдХреЗ рд╣реИрдВ: рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдпрд╛ рдПрдХ рд╕реНрдерд┐рддреАрдп рдСрдкрд░реЗрдЯрд░ ($ рдкреНрд░рддреАрдХ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, joe рдХреА рдорд┐рддреНрд░ рд╕реВрдЪреА рдореЗрдВ рди рдХреЗрд╡рд▓ рдЙрдирдХреЗ рдорд┐рддреНрд░реЛрдВ рдХреЗ рдирд╛рдо, рдмрд▓реНрдХрд┐ рдЙрдирдХреА рдЖрдпреБ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ, рдФрд░ рд╣рдо рдПрдХ рдорд┐рддреНрд░ рдХреА рдЖрдпреБ рдХреЛ 0 рд╡рд░реНрд╖ 3 рд╡рд░реНрд╖ рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рддрд╣рдд рдмрдврд╝рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
> db.users.update( { name: тАЬjoeтАЭ } , { $inc: { тАЬfriends.0.ageтАЭ : 3 } } );
рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд┐рддреНрд░ рдХреА рдЖрдпреБ рдмрдврд╝рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреЙрди, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╡рд╣ рдХрд┐рд╕ рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ рд╣реИ, рд╣рдо рдЗрд╕ рддрд░рд╣ рдХрд░рддреЗ рд╣реИрдВ:
> db.users.update( { тАЬfriends.nameтАЭ: тАЬjohnтАЭ } , { $inc: { тАЬfriends.$.ageтАЭ : 3 } } );
Upserts
рдЕрджреНрдпрддрди рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрджреНрдпрддрди рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдпрджрд┐ рдЕрдиреБрд░реЛрдзрд┐рдд рдорд╛рдирджрдВрдб рджреНрд╡рд╛рд░рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛; рдпрджрд┐ рдпрд╣ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореБрдЦрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдбреЗрдЯ рдХрдорд╛рдВрдб рдореЗрдВ рд╕рд╣реА рдХреЗ рдмрд░рд╛рдмрд░ рддреАрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдЬреИрд╕реЗ:
> db.users.update( { name: тАЬhelenтАЭ } , { $set: { age: 23 } } , true );
рдпрджрд┐ рд╣рдорд╛рд░реЗ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ "рд╣реЗрд▓реЗрди" рдирд╛рдо рдХрд╛ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдЙрдореНрд░: 23 рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдПрдХрд╛рдзрд┐рдХ рдЕрджреНрдпрддрди
рдЕрдкрдбреЗрдЯ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдкрд╣рд▓рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдорд┐рд▓рд╛ рдФрд░ рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдорд╛рди рдХреЗ рд╕рд╛рде рдЪреМрдерд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝реЗрдВ:
> db.users.update( { age: 18 } , { $inc: { age: 1 } } , false, true );
рдпрд╣ рдХреНрд╡реЗрд░реА рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдорд┐рд▓реЗрдЧреА рдЬреЛ 18 рд╡рд░реНрд╖ рдХрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ 1 рд╕реЗ рдмрдврд╝рд╛рддрд╛ рд╣реИред
рдЙрд╕рдХреЗ рд▓рд┐рдП рдмрд╕ рдЗрддрдирд╛ рд╣реАред рдпреЗ рд╕рднреА рд╕рдВрд╢реЛрдзрдХ рдирд╣реАрдВ рд╣реИрдВ, рдХреЗрд╡рд▓ рдмреБрдирд┐рдпрд╛рджреА рд╣реИрдВред
рд╕рдордп рд╣реЛрдЧрд╛, рдирд┐рд░рдВрддрд░рддрд╛ рд░рд╣реЗрдЧреАред