simple-mongo-2 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- simple_mongo_2/__init__.py +11 -0
- simple_mongo_2/aggregation_factory.py +183 -0
- simple_mongo_2/aggregation_pipeline.py +898 -0
- simple_mongo_2/aggregation_pipeline_builder.py +6 -0
- simple_mongo_2/db.py +511 -0
- simple_mongo_2-0.1.0.dist-info/METADATA +9 -0
- simple_mongo_2-0.1.0.dist-info/RECORD +9 -0
- simple_mongo_2-0.1.0.dist-info/WHEEL +4 -0
- simple_mongo_2-0.1.0.dist-info/entry_points.txt +3 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from .aggregation_factory import AggregationPipeline, AggregationFactory, AggregationStage
|
|
2
|
+
from .db import Client as SimpleMongo
|
|
3
|
+
from .aggregation_pipeline_builder import PipelineBuilder
|
|
4
|
+
|
|
5
|
+
__all__ = [
|
|
6
|
+
'AggregationPipeline',
|
|
7
|
+
'AggregationStage',
|
|
8
|
+
'AggregationFactory',
|
|
9
|
+
'SimpleMongo',
|
|
10
|
+
'PipelineBuilder'
|
|
11
|
+
]
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
from typing import List
|
|
2
|
+
|
|
3
|
+
from .aggregation_pipeline import *
|
|
4
|
+
|
|
5
|
+
# ---------------------------------------------------------------------------
|
|
6
|
+
# Aggregation Factory wrapper
|
|
7
|
+
# ---------------------------------------------------------------------------
|
|
8
|
+
|
|
9
|
+
from pymongo.collection import Collection
|
|
10
|
+
from .aggregation_pipeline import AggregationPipeline
|
|
11
|
+
|
|
12
|
+
class AggregationFactory:
|
|
13
|
+
def __init__(self, collection : Collection) -> None:
|
|
14
|
+
self.collection = collection
|
|
15
|
+
self._pipelines : AggregationPipeline = []
|
|
16
|
+
|
|
17
|
+
def execute(self):
|
|
18
|
+
return self.collection.aggregate(self._pipelines)
|
|
19
|
+
|
|
20
|
+
def match(self, pipeline : MatchStage):
|
|
21
|
+
self._pipelines.append(pipeline)
|
|
22
|
+
return self
|
|
23
|
+
|
|
24
|
+
def sort(self, pipeline : SortStage):
|
|
25
|
+
self._pipelines.append(pipeline)
|
|
26
|
+
return self
|
|
27
|
+
|
|
28
|
+
def limit(self, pipeline : LimitStage):
|
|
29
|
+
self._pipelines.append(pipeline)
|
|
30
|
+
return self
|
|
31
|
+
|
|
32
|
+
def project(self, pipeline: ProjectStage):
|
|
33
|
+
self._pipelines.append(pipeline)
|
|
34
|
+
return self
|
|
35
|
+
|
|
36
|
+
def skip(self, pipeline: SkipStage):
|
|
37
|
+
self._pipelines.append(pipeline)
|
|
38
|
+
return self
|
|
39
|
+
|
|
40
|
+
def unset(self, pipeline: UnsetStage):
|
|
41
|
+
self._pipelines.append(pipeline)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def group(self, pipeline: GroupStage):
|
|
45
|
+
self._pipelines.append(pipeline)
|
|
46
|
+
return self
|
|
47
|
+
|
|
48
|
+
def unwind(self, pipeline: UnwindStage):
|
|
49
|
+
self._pipelines.append(pipeline)
|
|
50
|
+
return self
|
|
51
|
+
|
|
52
|
+
def vector_search(self, pipeline: VectorSearchStage):
|
|
53
|
+
self._pipelines.append(pipeline)
|
|
54
|
+
return self
|
|
55
|
+
|
|
56
|
+
def lookup(self, pipeline: LookupStage):
|
|
57
|
+
self._pipelines.append(pipeline)
|
|
58
|
+
return self
|
|
59
|
+
|
|
60
|
+
def add_fields(self, pipeline: AddFieldsStage):
|
|
61
|
+
self._pipelines.append(pipeline)
|
|
62
|
+
return self
|
|
63
|
+
|
|
64
|
+
def set(self, pipeline: SetStage):
|
|
65
|
+
self._pipelines.append(pipeline)
|
|
66
|
+
return self
|
|
67
|
+
|
|
68
|
+
def bucket(self, pipeline: BucketStage):
|
|
69
|
+
self._pipelines.append(pipeline)
|
|
70
|
+
return self
|
|
71
|
+
|
|
72
|
+
def bucket_auto(self, pipeline: BucketAutoStage):
|
|
73
|
+
self._pipelines.append(pipeline)
|
|
74
|
+
return self
|
|
75
|
+
|
|
76
|
+
def count(self, pipeline: CountStage):
|
|
77
|
+
self._pipelines.append(pipeline)
|
|
78
|
+
return self
|
|
79
|
+
|
|
80
|
+
def densify(self, pipeline: DensifyStage):
|
|
81
|
+
self._pipelines.append(pipeline)
|
|
82
|
+
return self
|
|
83
|
+
|
|
84
|
+
def documents(self, pipeline: DocumentsStage):
|
|
85
|
+
self._pipelines.append(pipeline)
|
|
86
|
+
return self
|
|
87
|
+
|
|
88
|
+
def facet(self, pipeline: FacetStage):
|
|
89
|
+
self._pipelines.append(pipeline)
|
|
90
|
+
return self
|
|
91
|
+
|
|
92
|
+
def fill(self, pipeline: FillStage):
|
|
93
|
+
self._pipelines.append(pipeline)
|
|
94
|
+
return self
|
|
95
|
+
|
|
96
|
+
def geo_near(self, pipeline: GeoNearStage):
|
|
97
|
+
self._pipelines.append(pipeline)
|
|
98
|
+
return self
|
|
99
|
+
|
|
100
|
+
def graph_lookup(self, pipeline: GraphLookupStage):
|
|
101
|
+
self._pipelines.append(pipeline)
|
|
102
|
+
return self
|
|
103
|
+
|
|
104
|
+
def replace_root(self, pipeline: ReplaceRootStage):
|
|
105
|
+
self._pipelines.append(pipeline)
|
|
106
|
+
return self
|
|
107
|
+
|
|
108
|
+
def replace_with(self, pipeline: ReplaceWithStage):
|
|
109
|
+
self._pipelines.append(pipeline)
|
|
110
|
+
return self
|
|
111
|
+
|
|
112
|
+
def sample(self, pipeline: SampleStage):
|
|
113
|
+
self._pipelines.append(pipeline)
|
|
114
|
+
return self
|
|
115
|
+
|
|
116
|
+
def sort_by_count(self, pipeline: SortByCountStage):
|
|
117
|
+
self._pipelines.append(pipeline)
|
|
118
|
+
return self
|
|
119
|
+
|
|
120
|
+
def set_window_fields(self, pipeline: SetWindowFieldsStage):
|
|
121
|
+
self._pipelines.append(pipeline)
|
|
122
|
+
return self
|
|
123
|
+
|
|
124
|
+
def union_with(self, pipeline: UnionWithStage):
|
|
125
|
+
self._pipelines.append(pipeline)
|
|
126
|
+
return self
|
|
127
|
+
|
|
128
|
+
def merge(self, pipeline: MergeStage):
|
|
129
|
+
self._pipelines.append(pipeline)
|
|
130
|
+
return self
|
|
131
|
+
|
|
132
|
+
def out(self, pipeline: OutStage):
|
|
133
|
+
self._pipelines.append(pipeline)
|
|
134
|
+
return self
|
|
135
|
+
|
|
136
|
+
def search(self, pipeline: SearchStage):
|
|
137
|
+
self._pipelines.append(pipeline)
|
|
138
|
+
return self
|
|
139
|
+
|
|
140
|
+
def search_meta(self, pipeline: SearchMetaStage):
|
|
141
|
+
self._pipelines.append(pipeline)
|
|
142
|
+
return self
|
|
143
|
+
|
|
144
|
+
def list_search_indexes(self, pipeline: ListSearchIndexesStage):
|
|
145
|
+
self._pipelines.append(pipeline)
|
|
146
|
+
return self
|
|
147
|
+
|
|
148
|
+
def change_stream(self, pipeline: ChangeStreamStage):
|
|
149
|
+
self._pipelines.append(pipeline)
|
|
150
|
+
return self
|
|
151
|
+
|
|
152
|
+
def change_stream_split_large_event(self, pipeline: ChangeStreamSplitLargeEventStage):
|
|
153
|
+
self._pipelines.append(pipeline)
|
|
154
|
+
return self
|
|
155
|
+
|
|
156
|
+
def coll_stats(self, pipeline: CollStatsStage):
|
|
157
|
+
self._pipelines.append(pipeline)
|
|
158
|
+
return self
|
|
159
|
+
|
|
160
|
+
def current_op(self, pipeline: CurrentOpStage):
|
|
161
|
+
self._pipelines.append(pipeline)
|
|
162
|
+
return self
|
|
163
|
+
|
|
164
|
+
def index_stats(self, pipeline: IndexStatsStage):
|
|
165
|
+
self._pipelines.append(pipeline)
|
|
166
|
+
return self
|
|
167
|
+
|
|
168
|
+
def list_local_sessions(self, pipeline: ListLocalSessionsStage):
|
|
169
|
+
self._pipelines.append(pipeline)
|
|
170
|
+
return self
|
|
171
|
+
|
|
172
|
+
def list_sessions(self, pipeline: ListSessionsStage):
|
|
173
|
+
self._pipelines.append(pipeline)
|
|
174
|
+
return self
|
|
175
|
+
|
|
176
|
+
def plan_cache_stats(self, pipeline: PlanCacheStatsStage):
|
|
177
|
+
self._pipelines.append(pipeline)
|
|
178
|
+
return self
|
|
179
|
+
|
|
180
|
+
def query_stats(self, pipeline: QueryStatsStage):
|
|
181
|
+
self._pipelines.append(pipeline)
|
|
182
|
+
return self
|
|
183
|
+
|