2026 ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠΎΠ²
π£ Mongo-driver Golang - ΡΠ΅ΠΊΠΎΠ½Π½Π΅ΠΊΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ Mongo
βΆοΈΠΠΎΠΏΡΠΎΡ: ΠΊΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Golang ΠΊ MongoDB Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΡΠ΅ΡΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ go.mongodb.org/mongo-driver/mongo?
ΠΠ° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΠΏΡΠΈ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ Mongo ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ 30 ΡΠ΅ΠΊΡΠ½Π΄ Π²ΠΈΡΠΈΡ (Π²ΠΈΠ΄ΠΈΠΌΠΎ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ).
ΠΡΠΎ Π²ΡΠ΅ΠΌΡ β ΠΎΠ½ΠΎ Π·Π°Π΄Π°Π΅ΡΡΡ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ
ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈΠ»ΠΈ Π² ΡΠ°ΠΌΠΎΠΉ Mongo ΠΈΠ»ΠΈ ΠΎΡ ΡΠ΅Π³ΠΎ Π΅ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΡ? Mongo ΠΏΠΎΠ΄Π½ΡΡΠ° Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅, ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΎΠΉ:
ctx, _ := context.WithTimeout(context.Background(), timeoutSecond*time.Second)
client, err := mongo.Connect(ctx, options.Client().ApplyURI(connString))
Π‘Π°ΠΌ Π·Π°ΠΏΡΠΎΡ Π²ΠΎΡ:
err := mr.client.Database(mr.dbName).Collection(mr.collName).FindOne(ctx, filter).Decode(&p)
βΆοΈΠΡΠ²Π΅Ρ: ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ context.WithTimeout ΠΈΠ»ΠΈ context.WithCancel(ctx). ΠΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠ³ΠΎ, Ρ Π²Π°Ρ ΠΈΠΌΠ΅Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΊ Π±Π°Π·Π΅.
Π£ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΅ΡΡΡ ΡΡΠ΄ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Ρ ΡΠ°ΠΉΠΌΠ°ΡΡΠ°ΠΌΠΈ, ΠΎΠ΄Π½ΠΈ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° Π²ΡΠ΅ΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ (ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π²ΡΠ΅ΠΌΡ ΠΎΡΠΊΠ»ΠΈΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°).
β©ΠΠΎΠ³Π΄Π° ΠΌΡ ΠΊΠ»Π°Π΄ΡΠΌ ΠΠ ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Π·Π°ΠΏΡΠΎΡ, ΡΠΎ Π²ΠΈΡΠΈΡ ΠΊΠ°Π½Π°Π» (go channel), ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ, Π»ΠΈΠ±ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°, ΠΈΡΡΠ΅ΡΠ΅Π½ΠΈΡ timeout ΡΡΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°.
select {
case <-ctx.Done():
return nil, ctx.Err()
case <-selectionState.timeoutChan:
return nil, wrapServerSelectionError(ErrServerSelectionTimeout, t)
case current = <-subscriptionCh:
}
ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ <-selectionState.timeoutChan, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 30 ΡΠ΅ΠΊΡΠ½Π΄
β©ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π³ΠΎΠ²ΠΎΡΠΈΡ, ΡΡΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ Π½ΡΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄Π»ΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΎΡΠΊΠ»ΠΈΠΊΠ°:
client, err := mongo.NewClient(options.Client().ApplyURI("mongodb://localhost:27017"),
options.Client().SetConnectTimeout(time.Second * myTimeout),
options.Client().SetServerSelectionTimeout(time.Second * myServerTimeout))
1 ΠΌΠΈΠ½ΡΡΠ°
17Β Π°ΠΏΡΠ΅Π»ΡΒ 2024