Mongoose: рдореЛрдВрдЧреЛрдбрдм рд╕реЗ рдмрд╣рд┐рд╖реНрдХреГрдд рд╕рдВрдЧреНрд░рд╣ рд╡рд┐рдзрд┐рдпрд╛рдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 17 рдЕрдЧре░ 2018  ┬╖  28рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Automattic/mongoose

рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдХрд┐рд╕реА рдмрдЧ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

рдХреАрдбрд╝рд╛

рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?

Model.findByIdAndUpdate() рдореЛрдВрдЧреЛрдбрдм рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХрд░ рд░рд╣рд╛ рд╣реИ - рдЬрд┐рд╕рдиреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реИред рдвреВрдВрдвреЗрдВ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВред рдореЛрдВрдЧреЛрдбрдм рдЗрд╕рдХреЗ рдмрдЬрд╛рдп findOneAndUpdate, findOneAndReplace рдпрд╛ findOneAndDelete рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред

collection.ensureIndex рднреА рдмрд╣рд┐рд╖реНрдХреГрдд рд╣реИ - mongodb рдЗрд╕рдХреЗ рдмрдЬрд╛рдп createIndexes рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред

рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдПрдХ рдмрдЧ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо рдкреНрд░рджрд╛рди рдХрд░реЗрдВред

рдХрд┐рд╕реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП Model.findByIdAndUpdate / findOneAndUpdate рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЗрди рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?

рдХреЛрдИ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ!

рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ node.js, mongoose рдФрд░ MongoDB рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реЗрдВред

рдиреЛрдб v10.8.0
рдореЛрдВрдЧреЛрдбрдм v3.6.2
рдиреЗрд╡рд▓рд╛ v5.2.9

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореЗрд░рд╛ рднреА рдпрд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИред рдореБрдЭреЗ рдпрд╣ рднреА рдорд┐рд▓рддрд╛ рд╣реИ "рд╡рд┐рдХрд▓реНрдк рдЦреЛрдЬреЗрдВ [рдлрд╝реАрд▓реНрдб] рдмрд╣рд┐рд╖реНрдХреГрдд рд╣реИ рдФрд░ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред"

рд╕рднреА 28 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореЗрд░рд╛ рднреА рдпрд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИред рдореБрдЭреЗ рдпрд╣ рднреА рдорд┐рд▓рддрд╛ рд╣реИ "рд╡рд┐рдХрд▓реНрдк рдЦреЛрдЬреЗрдВ [рдлрд╝реАрд▓реНрдб] рдмрд╣рд┐рд╖реНрдХреГрдд рд╣реИ рдФрд░ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред"

(node:13076) DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.
(node:13076) DeprecationWarning: collection.remove is deprecated. Use deleteOne, deleteMany, or bulkWrite instead.
(node:13076) DeprecationWarning: collection.find option [fields] is deprecated and will be removed in a later version.
(node:13076) DeprecationWarning: collection.update is deprecated. Use updateOne, updateMany, or bulkWrite instead.

рдпрд╣рд╛рдБ рдХреБрдЫ рдФрд░ рд╣реИрдВ рдЬреЛ рдореБрдЭреЗ рдорд┐рд▓реЗ рд╣реИрдВ

#6165 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдФрд░ рд╕реАрдЖрдИ рдкрд░реАрдХреНрд╖рдг рдкрд░ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рдЖрдВрд╢рд┐рдХ рдмрд╣рд┐рд╖реНрдХрд░рдг рд╕рдВрджреЗрд╢ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк useFindAndModify рдХреЛ рдЧрд▓рдд рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред IMO рдпрд╣ рдЕрдм рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЧрд▓рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

mongoose.set('useFindAndModify', false);

рдЪреЗрддрд╛рд╡рдиреА: рдЙрдЪрд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд┐рдирд╛ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЧрд▓рдд рдкрд░ рд╕реЗрдЯ рди рдХрд░реЗрдВ

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдиреНрдп рдмрд╣рд┐рд╖реНрдХреГрдд рд╡рд┐рдзрд┐рдпреЛрдВ рдЬреИрд╕реЗ ensureIndex(es) рдФрд░ update рдХреЛ рдЕрднреА рднреА рдирдП рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЧрд▓рдд рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рдареАрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЕрдЧрд▓реЗ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╕рднреА рдкрджрд╛рд╡рдирдд рдкрджреНрдзрддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдФрд░ useFindAndModify рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ?

рдзреНрдпрд╛рди рджреЗрдВ:
рдХреЗрд╡рд▓ MongoDB 3.2+ рд╕рдорд░реНрдерди FindOneAndUpdate рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреНрд╡реЗрд░реА рд▓реЗрдХрд┐рди рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд [email protected] рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЕрднреА рднреА 2.6 рдкрд░ рд╕рдВрдЧрддрддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП findAndModify рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ , рдЗрд╕рд▓рд┐рдП useFindAndModify рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрд╕рддреНрдп рдмрдирд╛рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ MongoDB 3.0 рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдирд╣реАрдВ рдЫреЛрдбрд╝реЗрдЧрд╛ред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рдВрдЧрддрддрд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬрд▓реНрдж рд╣реА рдЯреВрдЯ рдЬрд╛рдПрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ [email protected] (рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ) рд╕реЗ рдмрд╣рд┐рд╖реНрдХреГрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдм рдЪреЗрддрд╛рд╡рдиреА рд╕рдВрджреЗрд╢ рднреА рдлреЗрдВрдХ рджреЗрддреЗ рд╣реИрдВред

рдЗрд╕рд▓рд┐рдП, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдиреЗрд╡рд▓рд╛ рдХреА рдЕрдЧрд▓реА рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬрд╝ (6.x) рдореЛрдВрдЧреЛрдбреАрдмреА 3.0 рд╕рдорд░реНрдерди рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рд╕рднреА рдирдП рдПрдкреАрдЖрдИ рдХреЛ рдЕрдкрдирд╛рдПрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, MongoDB 3.0 рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдлрд░рд╡рд░реА, 2018 рдореЗрдВ рдЬреАрд╡рди рдХреЗ рдЕрдВрдд рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ рд╣реИред

рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?

рддреЛ ... рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ? рдХреНрдпрд╛ рдЕрдЧрд▓реЗ рдиреЗрд╡рд▓рд╛ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдЬрд░реВрд░реА рд╣реИ?

@lpiVasquez рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ mongoose 5.x рд╕рдорд░реНрдерди MongoDB рд╕рд░реНрд╡рд░ 3.0 рдХрд╣рддрд╛ рд╣реИ ред

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

рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдмрд▓реНрдХрд┐ рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬ 5.3 рдореЗрдВ рдореЛрдВрдЧреЛрдбреАрдмреА рд╕рд░реНрд╡рд░ 3.0 рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЫреЛрдбрд╝ рд░рд╣рд╛ рд╣реИред рдХрдо рд╕реЗ рдХрдо 5.2 рдореЗрдВ рдордд рддреЛрдбрд╝реЛред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмрд╕ рдореЗрд░реА рд░рд╛рдпред

@IpiVasquez

рдпрджрд┐ рджреНрд╡рд╛рд░рд╛,

рдпрд╣ рдХреНрдпреЛрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ?

рддреБрдореНрд╣рд╛рд░рд╛ рдорддрд▓рдм рд╣реИ,

рдореЛрдВрдЧреЛрдбрдм рдЗрди рдПрдкреАрдЖрдИ рдХреЛ рдмрд╣рд┐рд╖реНрдХреГрдд рдХреНрдпреЛрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ?

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

рдХреНрдпрд╛ рдЕрдЧрд▓реЗ рдиреЗрд╡рд▓рд╛ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдЬрд░реВрд░реА рд╣реИ?

рдЕрдЧрд░ рд╣рдо рд╕реЗрд╡рд░ рд╕реНрдкреЗрдХ рд╕реЗ рдЪрд┐рдкрдХреЗ рд░рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреБрдЫ рднреА рдЬреЛ рдПрдкреАрдЖрдИ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ рд╡рд╣ рдПрдХ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕реЗ @6.0.0 , рдЬреИрд╕реЗ рдХрд┐ @5.3.0 рдпрд╛ рдкреИрдЪ рд░рд┐рд▓реАрдЬ рдЬреИрд╕реЗ @5.2.10 рдХреЗ рд╡рд┐рдкрд░реАрдд @6.0.0 @5.2.10 ред

рдореВрд▓ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдЙрдирд╕реЗ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ v4 рддрдХ рдЗрди рддрд░реАрдХреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддрд╛ред

рдЗрд╕ рдмреАрдЪ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЕрдм рддрдХ рджреЗрдЦреА рдЧрдИ рдЕрдзрд┐рдХрд╛рдВрд╢ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдмрд╣рд┐рд╖реНрдХреГрдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рди рдХрд░рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рд▓реИрдВрдб рдореЗрдВ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрддрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╡реИрд╕реЗ рднреА @6.0.0 рдиреЗрд╡рд▓рд╛ рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╛рдж рдХреЗ рдмрдЬрд╛рдп рдЬрд▓реНрдж рд╣реА рдиреЗрд╡рд▓реЗ рдореЗрдВ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП 2 рдореБрдЦреНрдп рдореБрджреНрджреЗ рдХреНрд╡реЗрд░реА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ fields projections рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдХрдо рд╕реЗ рдХрдо рд╕рд░реНрд╡рд░ рд╕рдВрд╕реНрдХрд░рдг 3.0.15 рдкрд░ рд╡рд╛рдкрд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ) рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдмрджрд▓ рд░рд╣рд╛ рд╣реИ useFindAndModify рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдЬреИрд╕рд╛ рдХрд┐ @Fonger рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдПрдХ рдкрд░рд┐рд╢рд┐рд╖реНрдЯ рдХреЗ рд╕рд╛рде:

рдЬрдм рдЖрдк 3.2 рд╕реЗ рдкрд╣рд▓реЗ рдХреЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдореВрд▓ рдбреНрд░рд╛рдЗрд╡рд░ рдореЗрдВ findOneAndUpdate рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рд▓рд┐рдП findAndModify рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ (рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдмрд┐рдирд╛), рдЗрд╕рд▓рд┐рдП findOneAndUpdate рдиреЗрд╡рд▓рд╛ рдореЗрдВ рдЕрднреА рднреА mongodb рдкреНрд░реА 3.2 рдФрд░ useFindAndModify: false рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

6880.js

#!/usr/bin/env node
'use strict';

const mongoose = require('mongoose');
mongoose.set('useFindAndModify', false);

const url = 'mongodb://localhost:27017/test';
const opts = { useNewUrlParser: true };

mongoose.connect(url, opts);
const conn = mongoose.connection;
const Schema = mongoose.Schema;

const schema = new Schema({
  name: String
});

const Test = mongoose.model('test', schema);

async function run() {
  await conn.dropDatabase();
  let admin = conn.db.admin();
  let { version } = await admin.serverInfo();
  console.log(`mongodb: ${version}`);
  console.log(`mongoose: ${mongoose.version}`);

  let cond = {};
  let update = { name: 'Sarah' };
  let opts = {
    upsert: true,
    new: true
  };

  let sarah = await Test.findOneAndUpdate(cond, update, opts);
  console.log(sarah);
  return conn.close();
}

run();

рдЖрдЙрдЯрдкреБрдЯ:

issues: ./6880.js
mongodb: 3.0.15
mongoose: 5.2.9
{ _id: 5b779ca8d1326ce227b6869f, __v: 0, name: 'Sarah' }
issues:

рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореВрд▓ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд╕рд╛рде рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

6880_рджреЗрд╢реА.рдЬреЗрдПрд╕

#!/usr/bin/env node
'use strict';

const { MongoClient, Logger } = require('mongodb');

const uri = 'mongodb://localhost:27017/test';
const opts = { 
  useNewUrlParser: true
};

async function run() {
  const client = new MongoClient(uri, opts);
  await client.connect();
  const db = client.db('gh-6881');
  await db.dropDatabase().catch(handleError);

  Logger.setLevel('debug');
  let res = await db
    .collection('tests')
    .findOneAndUpdate({}, { $set: { name: 'michael' } }, { upsert: true })
    .catch(handleError);
  Logger.setLevel('error');
  console.log(res);
  let doc = await db
    .collection('tests')
    .findOne({})
    .catch(handleError);

  console.log(doc);
  process.exit(0);
}

run();

function handleError(e) {
  return console.error(e.message);
}

рдЫреЛрдЯрд╛ рдЖрдЙрдЯрдкреБрдЯ:

...
message: 'executing command [{"ns":"gh-6881.$cmd","cmd":{"findAndModify":"tests","query":{},"new":false,"remove":false,"upsert":true,"update":{"$set":{"name":"michael"}}},"options":{}}] against localhost:27017',
...
{ value: null,
  lastErrorObject:
   { updatedExisting: false,
     n: 1,
     upserted: 5b77a23cd1326ce227b686a1 },
  ok: 1 }
{ _id: 5b77a23cd1326ce227b686a1, name: 'michael' }

рдореЗрд░рд╛ рднреА рдпрд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИред рдЖрд╡реЗрджрди рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдореБрдЭреЗ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓реА:

(node:9856) DeprecationWarning: collection.findAndModify is deprecated. Use findOneAndUpdate, findOneAndReplace or findOneAndDelete instead.
(node:9856) DeprecationWarning: collection.find option [fields] is deprecated and will be removed in a later version.
(node:9856) DeprecationWarning: collection.find option [fields] is deprecated and will be removed in a later version.

рдпрджрд┐ рдЖрдкрдХреЛ _рдЕрд╕реНрдерд╛рдпреА_ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рдХрд╖реНрдЯрдкреНрд░рдж рд▓рдЧрддреА рд╣реИ, рддреЛ рдЖрдк рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП --no-deprecation рдХреЗ рд╕рд╛рде cli рдореЗрдВ node.js рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _not рдЕрдиреБрд╢рдВрд╕рд┐рдд_ рдирд╣реАрдВ рд╣реИред

рдореЗрд░реЗ рд╕рд╛рде:

 (node:1) DeprecationWarning: collection.findAndModify is deprecated. Use findOneAndUpdate, findOneAndReplace or findOneAndDelete instead.
 (node:1) DeprecationWarning: collection.remove is deprecated. Use deleteOne, deleteMany, or bulkWrite instead.
(node:1) DeprecationWarning: collection.update is deprecated. Use updateOne, updateMany, or bulkWrite instead.
 (node:1) DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.
(node:1) DeprecationWarning: collection.find option [fields] is deprecated and will be removed in a later version.
(node:1) DeprecationWarning: collection.find option [fields] is deprecated and will be removed in a later version.

рдкреНрдпрд╛рд░ package-lock.json рдкрд╣рд▓реЗ рд╕реЗ рдХрд╣реАрдВ рдЬреНрдпрд╛рджрд╛...

рдЗрди рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ:

1) рдкреБрди: findOneAndUpdate() рдФрд░ findAndModify() рдмрд╣рд┐рд╖реНрдХрд░рдг, mongoose.set('useFindAndModify', false); рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
2) рдкреБрди: remove() рдмрд╣рд┐рд╖реНрдХрд░рдг, deleteOne() рдпрд╛ deleteMany() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
3) рдкреБрди: update() рдкрджрд╛рд╡рдирддрд┐, updateMany() . рд╕реЗ рдмрджрд▓реЗрдВ

рд╣рдо рдЗрди рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЬреЛрдбрд╝реЗрдВрдЧреЗ, рдФрд░ рдХреБрдЫ рдЖрдВрддрд░рд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ рдиреЗрд╡рд▓рд╛ рдЗрди рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдХрд╛рд░рдг рди рдмрдиреЗред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рд╕рднреА рдкрджрд╛рд╡рдирдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдФрд░ рдЕрдЧрд▓реЗ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬ рдореЗрдВ useFindAndModify рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ?

рдореИрдВ рдЗрд╕рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд░рд╣реВрдВрдЧрд╛

рдХреНрдпрд╛ рдиреЗрд╡рд▓реЗ рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирдП рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реИ, deleteOne() , deleteMany() , updateMany() рдЖрджрд┐?

+1
рдПрдХ рд╣реА рдЪреЗрддрд╛рд╡рдиреАред рд╣рдореЗрдВ рдирдП рдбреНрд░рд╛рдЗрд╡рд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рддреЛ рдЬреИрд╕реЗ, рдЕрднреА рд╣рдореЗрдВ рдЙрди рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдирдЬрд╝рд░рдЕрдВрджрд╛рдЬрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛? рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореИрдВ рдПрдкреАрдЖрдИ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд╣рд╛рдВ рдореБрдЭреЗ рдбреАрдмреА рд╕реЗ рд╕рдмрдХреБрдЫ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдФрд░ рдЬрдм рднреА рдореИрдВ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВред рдвреВрдВрдвреЗрдВ ()ред рддрдм ()ред .... рдЖрджрд┐ рдпрд╣ рдореБрдЭреЗ рдПрдХ рд╣реА рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИред рдореИрдВ рдЙрд╕ рдЦреЛрдЬ () рд╡рд┐рдзрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рд╕реЗ рдкрд░реЗрд╢рд╛рди рд╣реИрдВ, рддреЛ рдЖрдк рд╢рд╛рдпрдж рдиреЛрдб рдореЗрдВ рдмрд╣рд┐рд╖реНрдХрд░рдг рдиреЛрдЯрд┐рд╕ рдЕрдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрдкрд░реЛрдХреНрдд рдлреЛрдВрдЧрд░ рдХреА рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВ), рдпрд╛ рдЖрдк рдореЛрдВрдЧреЛрд╕ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯ рд╕рдХрддреЗ рд╣реИрдВред

рддреЛ рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ рдПрдХ рдЦреЛрдЬ рдХреНрд╡реЗрд░реА рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИред рдиреЗрд╡рд▓рд╛ рдЯреАрдо рд╕реЗ рдЕрдЧрд▓реЗ рдЕрджреНрдпрддрди рдХреЗ рдмрд╛рдж рддрдХ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред

(рдиреЛрдб: 15500) рдкрджрд╛рд╡рдирдд рдЪреЗрддрд╛рд╡рдиреА: рд╕рдВрдЧреНрд░рд╣.рдЦреЛрдЬ рд╡рд┐рдХрд▓реНрдк [рдлрд╝реАрд▓реНрдб] рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

fields рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди 5.2.10 рдореЗрдВ рд╣реЛрдЧрд╛, рдЖрдк рдЗрд╕реЗ рдЕрдм рдФрд░ рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗред рдЕрдиреНрдп рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ: https://github.com/Automattic/mongoose/issues/6922#issue -354147871

рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж https://mongoosejs.com/docs/deprecations.html

рдкреБрди: findOneAndUpdate() рдФрд░ findAndModify() рдкрджрд╛рд╡рдирддрд┐, рдПрдХрдорд╛рддреНрд░ рд╡рд░реНрддрдорд╛рди ( 5.2.17 ) рд╕рдорд╛рдзрд╛рди рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИ:

mongoose.set('useFindAndModify', false);

рдХреНрдпрд╛ рдпрд╣ рд╕рдЪ рд╣реИ?

рдореИрдВ Model.findByIdAndUpdate() рдФрд░ Model.findOneAndUpdate() . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ mongoose рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд mongo db рдбреНрд░рд╛рдЗрд╡рд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░/рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреНрдпрд╛ рдореИрдВ рд╕рд╣реА рд╣реЛрдЧрд╛?

+1 рдореЗрд░реЗ рдкрд╛рд╕ Model.findByIdAndUpdate() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рд╣реИ;

рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

  • рдореЛрдВрдЧреЛрдбрдм: 3.1.4
  • рдиреЗрд╡рд▓рд╛: 5.2.16

рдЗрд╕ рдкрд░ рдХреЛрдИ рднреА рд╕рдорд╛рдЪрд╛рд░ ?

@gianpaj рд╣рд╛рдБ mongoose.set('useFindAndModify', false) findAndModify рдкрджрд╛рд╡рдирддрд┐ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд▓рд┐рдП рдПрдХрдорд╛рддреНрд░ рд╡рд░реНрддрдорд╛рди рд╕рдорд╛рдзрд╛рди рд╣реИред рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ collection.findAndModify() рдкрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХреЙрд▓ [email protected] рдореЗрдВ рдЪрд▓реА рдЬрд╛рдПрдЧреАред @ vkarpov15 рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рд╣реИ? рдпрд╛ рдПрдХ рд╕рдордп рд╕реАрдорд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛрдирд╛ рдмрд╣реБрдд рдЬрд▓реНрджреА рд╣реИ?

рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ findOneAndUpdate рдкрд░ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рддреЛ @daniyalawan рдпрд╣рд╛рдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦреЗрдВ 'useFindAndModify' рд╡рд┐рдХрд▓реНрдк рдЖрдк рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ (рдпрд╣ findByIdAndUpdate рддрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ findOneAndUpdate рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ)ред

@Sastidar [email protected] рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ? рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рд╕рднреА рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

@lineus @gianpaj рд╣рд╛рдБ, Mongoose 6.0.0 рдХреЗ рд╕рд╛рде useFindAndModify рд╡рд┐рдХрд▓реНрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧреАред рд╣рдо рдиреЗрд╡рд▓рд╛ 6 рдХреЛ рдХрдм рд░рд┐рд▓реАрдЬрд╝ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рдХреА рдХреЛрдИ рд╕рдордп-рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИред

рдкрджрд╛рд╡рдирддрд┐ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ - рдХреНрдпрд╛ рдиреЗрд╡рд▓рд╛ findByIdAndUpdate рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЪрд░рдгрдмрджреНрдз рддрд░реАрдХреЗ рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдЧрд╛ рдпрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд findAndModify рдХреЛ рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд┐рдП рдмрд┐рдирд╛ рдЪрд░рдгрдмрджреНрдз рддрд░реАрдХреЗ рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?

рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдкреВрдЫ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдмрдбрд╝рд╛ рдХреЛрдбрдмреЗрд╕ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореИрдВ рдЕрдкрдиреЗ рд╕рднреА findByIdAndUpdate рдХреЛ findOneAndUpdate рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реВрдВред

@gianpaj рд╣рд╛рдБ mongoose.set('useFindAndModify', false) findAndModify рдкрджрд╛рд╡рдирддрд┐ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд▓рд┐рдП рдПрдХрдорд╛рддреНрд░ рд╡рд░реНрддрдорд╛рди рд╕рдорд╛рдзрд╛рди рд╣реИред рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ collection.findAndModify() рдкрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХреЙрд▓ [email protected] рдореЗрдВ рдЪрд▓реА рдЬрд╛рдПрдЧреАред @ vkarpov15 рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рд╣реИ? рдпрд╛ рдПрдХ рд╕рдордп рд╕реАрдорд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛрдирд╛ рдмрд╣реБрдд рдЬрд▓реНрджреА рд╣реИ?

рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ findOneAndUpdate рдкрд░ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рддреЛ @daniyalawan рдпрд╣рд╛рдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦреЗрдВ 'useFindAndModify' рд╡рд┐рдХрд▓реНрдк рдЖрдк рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ (рдпрд╣ findByIdAndUpdate рддрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ findOneAndUpdate рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ)ред

@Sastidar [email protected] рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ? рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рд╕рднреА рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

рдЕрдЧрд░ рдореИрдВ mongoose.set('useFindAndModify', false) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ {new: true} рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк?

@anks333 рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ { new: true } рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

6880.js

#!/usr/bin/env node
'use strict';

const assert = require('assert');
const mongoose = require('mongoose');
mongoose.set('useFindAndModify', false);
const { Schema, connection} = mongoose;
const DB = '6880';
const URI = `mongodb://localhost:27017/${DB}`;
const OPTS = { family: 4, useNewUrlParser: true };

const schema = new Schema({
  name: String
});

const Test = mongoose.model('test', schema);

const test = new Test({ name: 'test1' });

async function run() {
  await mongoose.connect(URI, OPTS);
  await connection.dropDatabase();
  const doc = await Test.create(test);
  assert.ok(doc);
  const cond = {};
  const update = { name: 'test2' };
  const options = { new: true };
  const updated = await Test.findOneAndUpdate(cond, update, options);
  assert.strictEqual(updated.name, 'test2');
  console.log('All Assertions Pass.');
  await connection.close();
}

run();

рдЖрдЙрдЯрдкреБрдЯ:

issues: ./6880.js
All Assertions Pass.
issues:

@LBWright рд╣рдорд╛рд░рд╛ findByIdAndUpdate рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИ, рд╣рдо рдХреЗрд╡рд▓ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЦреЛрдЬ рдХреЛ рд╕реНрд╡реИрдк рдХрд░реЗрдВрдЧреЗ рдФрд░ рдПрдкреАрдЖрдИ рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВрдЧреЗ

(рдиреЛрдб: 10767) рдкрджрд╛рд╡рдирдд рдЪреЗрддрд╛рд╡рдиреА: collection.ensureIndex рдкрджрд╛рд╡рдирдд рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп createIndexes рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

adamreisnz picture adamreisnz  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

efkan picture efkan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

varunjayaraman picture varunjayaraman  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

AraanBranco picture AraanBranco  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

simonxca picture simonxca  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ