forked from LueMar-R/P13_vldb
/
connexion.py
105 lines (83 loc) · 3.25 KB
/
connexion.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
from pymongo import MongoClient
import json
import os
client = MongoClient('mongodb://localhost:27017')
db = client["dblp"]
collec = db.publis
n=1
def deco():
global n
print("+++++++++++++++++++++++++++++++++++")
print("+++++++++++++++++++++++++++++++++++")
print("+++++++++ ", n," +++++++++")
print("+++++++++++++++++++++++++++++++++++")
print("\n")
n+=1
def pause():
print("\n")
programPause = input("Appuyez sur <ENTREE> pour continuer...")
deco()
deco()
# Compter le nombre de documents de la collection publis ;
results1 = db.publis.count_documents({})
print("il y a ", results1, " documents dans la collection")
pause()
# Lister tous les livres (type “Book”) ;
print("Liste des livres : \n")
results2 = list( collec.find({"type":"Book"}) )
for i in range(10) :
print(",".join(results2[i]["authors"]))
print("|{:^10}|{:<100}|{:^10}|".format(results2[i]["type"], results2[i]["title"], results2[i]["year"]))
pause()
# Lister les livres depuis 2014 ;
print("Liste des livres parus depuis 2014 : \n")
results3 = list( collec.find({"type":"Book", "year":{"$gte":2014}}) )
for i in range(10) :
print(",".join(results3[i]["authors"]))
print("|{:^10}|{:<100}|{:^10}|".format(results3[i]["type"], results3[i]["title"], results3[i]["year"]))
pause()
# Lister les publications de l’auteur “Toru Ishida” ;
print("Publications de Toru Ishida : \n")
results4= db.publis.find({"authors":{'$regex':'Toru Ishida'}}, {"type":1, "title":1, "year":1, "_id":0})
for result in results4 :
print("|{:^10}|{:<100}|{:^10}| \n".format(result["type"], result["title"], result["year"]))
pause()
# Lister tous les auteurs distincts ;
print("Liste des auteurs : \n")
result5 = collec.distinct("authors")
for i in range(25) :
print(result5[i]) ## on imprime que les 20 premiers
pause()
## Trier les publications de “Toru Ishida” par titre de livre ;
print("Tri des publications de Ishida par titre : \n")
results6 = collec.aggregate( [ {"$match":{"authors":"Toru Ishida"}}, {"$sort":{"title":1}} ] )
for result in results6 :
print(",".join(result["authors"]))
print("|{:^10}|{:<100}|{:^10}|".format(result["type"], result["title"], result["year"]))
pause()
# Compter le nombre de ses publications ;
results7= db.publis.count_documents({"authors":{'$regex':'Toru Ishida'}})
print(" >>>> Toru Ishida a publié : ", results7, "articles <<<<")
pause()
# Compter le nombre de publications depuis 2011 et par type ;
print("Nombre de publications depuis 2011 par type : \n")
results8 = list(
collec.aggregate( [
{"$match":{"year":{"$gte":2011}}},
{"$group":{"_id" : "$type", "total":{"$sum":1}}}
] )
)
for result in results8 :
print("|{:<50}|{:^10}|".format(result["_id"], result["total"]))
pause()
# Compter le nombre de publications par auteur et trier le résultat par ordre croissant ;
print("Nombre de publications par auteur, dans l'odre croissant : \n")
results9 = list(
collec.aggregate( [
{"$unwind":"$authors"},
{"$group":{"_id" : "$authors", "total":{"$sum":1} } },
{"$sort":{"total":1}},
] )
)
for i in range(len(results9)-20, len(results9)):
print("|{:<50}|{:^10}|".format(results9[i]["_id"], results9[i]["total"]))