Coverage for docs_src / tutorial / update / tutorial000.py: 100%

48 statements  

« prev     ^ index     » next       coverage.py v7.12.0, created at 2025-12-07 08:37 +0000

1import os 1abcdef

2from typing import Optional 1abcdef

3 

4from mongodb_odm import ASCENDING, Document, IndexModel, apply_indexes, connect 1abcdef

5 

6 

7class Player(Document): 1abcdef

8 name: str 1abcdef

9 country_code: str 1abcdef

10 rating: Optional[int] = None 1abcdef

11 

12 class ODMConfig(Document.ODMConfig): 1abcdef

13 indexes = [ 1abcdef

14 IndexModel([("rating", ASCENDING)]), 

15 ] 

16 

17 

18def create_players(): 1abcdef

19 Player(name="Pelé", country_code="BRA", rating=98).create() 1abcdef

20 Player(name="Diego Maradona", country_code="ARG", rating=97).create() 1abcdef

21 Player(name="Zinedine Zidane", country_code="FRA", rating=94).create() 1abcdef

22 Player(name="Ronaldo", country_code="BRA", rating=94).create() 1abcdef

23 Player(name="Neymar", country_code="BRA", rating=89).create() 1abcdef

24 Player(name="Lionel Messi", country_code="ARG", rating=91).create() 1abcdef

25 Player(name="Ángel Di María", country_code="ARG", rating=84).create() 1abcdef

26 Player(name="Karim Benzema", country_code="FRA", rating=89).create() 1abcdef

27 Player(name="Antoine Griezmann", country_code="FRA", rating=85).create() 1abcdef

28 Player(name="Kylian Mbappé", country_code="FRA", rating=91).create() 1abcdef

29 Player(name="Gerd Müller", country_code="GER").create() 1abcdef

30 Player(name="Miroslav Klose", country_code="GER", rating=91).create() 1abcdef

31 Player(name="Thomas Müller", country_code="GER", rating=87).create() 1abcdef

32 Player(name="Cristiano Ronaldo", country_code="POR", rating=87).create() 1abcdef

33 Player(name="Eusébio", country_code="POR", rating=93).create() 1abcdef

34 Player(name="Diogo Jota", country_code="POR", rating=85).create() 1abcdef

35 Player(name="David Beckham", country_code="ENG", rating=89).create() 1abcdef

36 Player(name="Wayne Rooney", country_code="ENG", rating=80).create() 1abcdef

37 Player(name="Harry Kane", country_code="ENG", rating=89).create() 1abcdef

38 

39 

40def configuration(): 1abcdef

41 connect(os.environ.get("MONGO_URL", "mongodb://localhost:27017/testdb")) 1abcdef

42 apply_indexes() 1abcdef

43 

44 

45def update_document(): 1abcdef

46 player = Player.get(filter={Player.name: "Pelé"}) 1abcdef

47 player.rating = 97 1abcdef

48 player.update() 1abcdef

49 

50 

51def update_one_document(): 1abcdef

52 result = Player.update_one( 1abcdef

53 filter={Player.name: "Diego Maradona"}, data={"$set": {Player.rating: 98}} 

54 ) 

55 print(result.modified_count) 1abcdef

56 

57 

58def update_many_document(): 1abcdef

59 result = Player.update_many( 1abcdef

60 filter={Player.rating: 91}, data={"$set": {Player.rating: 92}} 

61 ) 

62 print(result.modified_count) 1abcdef

63 

64 

65def main(): 1abcdef

66 configuration() 1abcdef

67 create_players() 1abcdef

68 

69 update_document() 1abcdef

70 update_one_document() 1abcdef

71 update_many_document() 1abcdef

72 

73 

74if __name__ == "__main__": 1abcdef

75 main()