@webda/mongo 4.0.0-beta.4 → 4.0.0-beta.6

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.
@@ -70,9 +70,17 @@ export declare class MongoRepository<T extends ModelClass> extends MemoryReposit
70
70
  * Convert an object to the document stored in MongoDB
71
71
  * @param item - the model instance or raw data
72
72
  * @param key - the primary key
73
+ * @param fallbackType - the type to stamp when the object declares none (null: none)
73
74
  * @returns the document
74
75
  */
75
- protected toDocument(item: any, key: string): any;
76
+ protected toDocument(item: any, key: string, fallbackType?: string | undefined): any;
77
+ /**
78
+ * The type an object written by the application declares: the `__type` its document was read with
79
+ * (non-enumerable, set by {@link fromDocument}), else the identifier of its class. Plain data declares none.
80
+ * @param item - the object
81
+ * @returns the model identifier, undefined for plain data
82
+ */
83
+ protected declaredType(item: any): string | undefined;
76
84
  /**
77
85
  * Convert a stored document into a model instance
78
86
  * @param doc - the MongoDB document
@@ -114,11 +122,47 @@ export declare class MongoRepository<T extends ModelClass> extends MemoryReposit
114
122
  * @returns the class filter or undefined if the model has no metadata
115
123
  */
116
124
  protected getClassFilter(): any;
125
+ /**
126
+ * Translate a WebdaQL filter to a MongoDB filter restricted to this model
127
+ * @param expression - the WebdaQL expression
128
+ * @returns the MongoDB filter
129
+ */
130
+ protected buildFilter(expression: WebdaQL.Expression): any;
131
+ /**
132
+ * Translate an aggregation to a MongoDB pipeline
133
+ *
134
+ * Group keys live in `_id.gN` and are flattened by executeAggregation, since MongoDB
135
+ * cannot project dotted output names. The query is validated again first: paths and aliases become
136
+ * field references and output names.
137
+ * @param query - the aggregation
138
+ * @returns the pipeline
139
+ */
140
+ buildAggregationPipeline(query: WebdaQL.AggregationQuery): any[];
141
+ /** @override — MongoDB aggregation pipeline */
142
+ protected executeAggregation(query: WebdaQL.AggregationQuery): Promise<WebdaQL.AggregationResult<any>>;
117
143
  /** @override — translate the WebdaQL query to a MongoDB find */
118
144
  query(query: string | any): Promise<{
119
145
  results: InstanceType<T>[];
120
146
  continuationToken?: string;
121
147
  }>;
148
+ /**
149
+ * MongoDB filter of the objects a statement targets: its WHERE and the class filter, restricted to the first
150
+ * LIMIT documents when the statement has a LIMIT (MongoDB bulk writes have none)
151
+ * @param statement - the parsed statement
152
+ * @returns the filter, undefined when LIMIT is 0
153
+ */
154
+ protected getStatementFilter(statement: WebdaQL.Query): Promise<any | undefined>;
155
+ /**
156
+ * Delete in bulk with one `deleteMany`: no per-object event (see `Repository.deleteMany`)
157
+ * @override
158
+ */
159
+ deleteMany(statement: string | WebdaQL.Query, params?: WebdaQL.QueryParameters): Promise<number>;
160
+ /**
161
+ * Update in bulk with one `updateMany` and `$set` (dotted targets create their parents): no per-object event
162
+ * (see `Repository.updateMany`)
163
+ * @override
164
+ */
165
+ updateMany(statement: string | WebdaQL.Query, params?: WebdaQL.QueryParameters): Promise<number>;
122
166
  /**
123
167
  * Name of the underlying collection, used in errors
124
168
  * @returns the collection name
@@ -1 +1 @@
1
- {"version":3,"file":"mongodb.service.d.ts","sourceRoot":"","sources":["../src/mongodb.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mongodb.service.d.ts","sourceRoot":"","sources":["../src/mongodb.service.ts"],"names":[],"mappings":"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"}
@@ -92,9 +92,10 @@ export function mapExpression(expression) {
92
92
  const attribute = expression.attribute.join(".");
93
93
  switch (expression.operator) {
94
94
  case "=":
95
- case "CONTAINS":
96
- // MongoDB use same syntax for exact match or contains for an array
97
95
  return { [attribute]: expression.value };
96
+ case "CONTAINS":
97
+ // Only an array holding the value (a plain `{a: v}` would also match a scalar equal to v)
98
+ return { [attribute]: { $elemMatch: { $eq: expression.value } } };
98
99
  case "<":
99
100
  return { [attribute]: { $lt: expression.value } };
100
101
  case ">":
@@ -142,17 +143,37 @@ export class MongoRepository extends MemoryRepository {
142
143
  * Convert an object to the document stored in MongoDB
143
144
  * @param item - the model instance or raw data
144
145
  * @param key - the primary key
146
+ * @param fallbackType - the type to stamp when the object declares none (null: none)
145
147
  * @returns the document
146
148
  */
147
- toDocument(item, key) {
149
+ toDocument(item, key, fallbackType = this.model.Metadata?.Identifier) {
148
150
  const doc = JSON.parse(JSON.stringify(item));
149
151
  doc._id = key;
150
- const type = item?.constructor?.Metadata?.Identifier ?? this.model.Metadata?.Identifier;
152
+ // An enumerable `__type` key of plain data is never trusted
153
+ delete doc.__type;
154
+ const type = this.declaredType(item) ?? fallbackType;
151
155
  if (type) {
152
156
  doc.__type = type;
153
157
  }
154
158
  return doc;
155
159
  }
160
+ /**
161
+ * The type an object written by the application declares: the `__type` its document was read with
162
+ * (non-enumerable, set by {@link fromDocument}), else the identifier of its class. Plain data declares none.
163
+ * @param item - the object
164
+ * @returns the model identifier, undefined for plain data
165
+ */
166
+ declaredType(item) {
167
+ if (!item || typeof item !== "object") {
168
+ return undefined;
169
+ }
170
+ const own = Object.getOwnPropertyDescriptor(item, "__type");
171
+ if (own && !own.enumerable && typeof own.value === "string") {
172
+ return own.value;
173
+ }
174
+ const clazz = Object.getPrototypeOf(item)?.constructor;
175
+ return clazz && clazz !== Object ? clazz.Metadata?.Identifier : undefined;
176
+ }
156
177
  /**
157
178
  * Convert a stored document into a model instance
158
179
  * @param doc - the MongoDB document
@@ -220,7 +241,21 @@ export class MongoRepository extends MemoryRepository {
220
241
  /** @override */
221
242
  async update(data, conditionField, condition) {
222
243
  const key = this.getPrimaryKey(data).toString();
223
- const res = await (await this.getCollection()).replaceOne(this.getFilter(key, conditionField, condition), this.toDocument(data, key));
244
+ const collection = await this.getCollection();
245
+ const filter = this.getFilter(key, conditionField, condition);
246
+ let res;
247
+ if (this.declaredType(data)) {
248
+ res = await collection.replaceOne(filter, this.toDocument(data, key));
249
+ }
250
+ else {
251
+ // Plain data (ModelRef.update) keeps the stored type, in one atomic write: a write through a parent
252
+ // repository never re-types a subclass document. `$literal` keeps `$`-prefixed values as data.
253
+ res = await collection.updateOne(filter, [
254
+ {
255
+ $replaceWith: { $mergeObjects: [{ $literal: this.toDocument(data, key, null) }, { __type: "$__type" }] }
256
+ }
257
+ ]);
258
+ }
224
259
  if (res.matchedCount === 0) {
225
260
  throw new UpdateConditionFailError(key, conditionField, condition);
226
261
  }
@@ -352,9 +387,114 @@ export class MongoRepository extends MemoryRepository {
352
387
  }
353
388
  return { $or: [{ __type: { $in: ids } }, { __type: { $exists: false } }] };
354
389
  }
390
+ /**
391
+ * Translate a WebdaQL filter to a MongoDB filter restricted to this model
392
+ * @param expression - the WebdaQL expression
393
+ * @returns the MongoDB filter
394
+ */
395
+ buildFilter(expression) {
396
+ const filter = mapExpression(expression);
397
+ const classFilter = this.getClassFilter();
398
+ if (classFilter) {
399
+ return Object.keys(filter).length ? { $and: [classFilter, filter] } : classFilter;
400
+ }
401
+ return filter;
402
+ }
403
+ /**
404
+ * Translate an aggregation to a MongoDB pipeline
405
+ *
406
+ * Group keys live in `_id.gN` and are flattened by executeAggregation, since MongoDB
407
+ * cannot project dotted output names. The query is validated again first: paths and aliases become
408
+ * field references and output names.
409
+ * @param query - the aggregation
410
+ * @returns the pipeline
411
+ */
412
+ buildAggregationPipeline(query) {
413
+ WebdaQL.validateAggregation(query);
414
+ const id = {};
415
+ const sortKeys = {};
416
+ query.groupBy.forEach((path, i) => {
417
+ // $ifNull: a missing field and an explicit null always share one group
418
+ id[`g${i}`] = { $ifNull: [`$${path}`, null] };
419
+ sortKeys[path] = `_id.g${i}`;
420
+ });
421
+ const group = { _id: query.groupBy.length ? id : null };
422
+ const sizes = {};
423
+ for (const [alias, metric] of Object.entries(query.metrics)) {
424
+ const field = `$${metric.field}`;
425
+ sortKeys[alias] = alias;
426
+ switch (metric.fn) {
427
+ case "COUNT":
428
+ group[alias] = metric.field
429
+ ? { $sum: { $cond: [{ $ne: [{ $ifNull: [field, null] }, null] }, 1, 0] } }
430
+ : { $sum: 1 };
431
+ break;
432
+ case "COUNT_DISTINCT":
433
+ group[alias] = { $addToSet: field };
434
+ sizes[alias] = { $size: { $filter: { input: `$${alias}`, cond: { $ne: ["$$this", null] } } } };
435
+ break;
436
+ case "SUM":
437
+ group[alias] = { $sum: field };
438
+ break;
439
+ case "AVG":
440
+ group[alias] = { $avg: field };
441
+ break;
442
+ case "MIN":
443
+ group[alias] = { $min: field };
444
+ break;
445
+ case "MAX":
446
+ group[alias] = { $max: field };
447
+ break;
448
+ }
449
+ }
450
+ const pipeline = [{ $match: this.buildFilter(query.filter) }, { $group: group }];
451
+ if (Object.keys(sizes).length) {
452
+ pipeline.push({ $addFields: sizes });
453
+ }
454
+ const sort = {};
455
+ for (const order of query.orderBy ?? []) {
456
+ sort[sortKeys[order.key]] = order.direction === "ASC" ? 1 : -1;
457
+ }
458
+ if (!Object.keys(sort).length && query.groupBy.length) {
459
+ query.groupBy.forEach((_, i) => (sort[`_id.g${i}`] = 1));
460
+ }
461
+ if (Object.keys(sort).length) {
462
+ pipeline.push({ $sort: sort });
463
+ }
464
+ const limit = query.limit ?? (query.groupBy.length ? this.aggregationOptions.maxGroups + 1 : undefined);
465
+ if (limit) {
466
+ pipeline.push({ $limit: limit });
467
+ }
468
+ return pipeline;
469
+ }
470
+ /** @override — MongoDB aggregation pipeline */
471
+ async executeAggregation(query) {
472
+ const docs = await (await this.getCollection())
473
+ .aggregate(this.buildAggregationPipeline(query), { allowDiskUse: true })
474
+ .toArray();
475
+ if (query.limit === undefined && docs.length > this.aggregationOptions.maxGroups) {
476
+ throw new WebdaQL.AggregationError("AGGREGATION_TOO_MANY_GROUPS", `Aggregation exceeds ${this.aggregationOptions.maxGroups} groups`);
477
+ }
478
+ const rows = docs.map(doc => {
479
+ const row = {};
480
+ query.groupBy.forEach((path, i) => (row[path] = doc._id?.[`g${i}`] ?? null));
481
+ for (const [alias, metric] of Object.entries(query.metrics)) {
482
+ row[alias] = doc[alias] ?? (metric.fn === "SUM" || metric.fn.startsWith("COUNT") ? 0 : null);
483
+ }
484
+ return row;
485
+ });
486
+ if (!rows.length && !query.groupBy.length) {
487
+ // MongoDB returns no document for an empty global aggregation, SQL and the spec return one row
488
+ return { rows: new WebdaQL.Aggregator(query).rows(), native: true };
489
+ }
490
+ return { rows, native: true };
491
+ }
355
492
  /** @override — translate the WebdaQL query to a MongoDB find */
356
493
  async query(query) {
357
- const parsed = typeof query === "string" ? WebdaQL.parse(query) : query;
494
+ // A query object built or changed by code goes back through the grammar: no forged operator reaches MongoDB
495
+ const parsed = typeof query === "string" ? WebdaQL.parse(query) : WebdaQL.normalizeQuery(query);
496
+ // DELETE / UPDATE go to deleteMany / updateMany; a field list is not a projection here
497
+ WebdaQL.assertFilterQuery(parsed);
358
498
  let offset = parseInt(parsed.continuationToken);
359
499
  if (isNaN(offset)) {
360
500
  offset = 0;
@@ -364,11 +504,7 @@ export class MongoRepository extends MemoryRepository {
364
504
  sort[order.field] = order.direction === "ASC" ? 1 : -1;
365
505
  }
366
506
  const limit = parsed.limit || 1000;
367
- let filter = mapExpression(parsed.filter);
368
- const classFilter = this.getClassFilter();
369
- if (classFilter) {
370
- filter = Object.keys(filter).length ? { $and: [classFilter, filter] } : classFilter;
371
- }
507
+ const filter = this.buildFilter(parsed.filter);
372
508
  const docs = await (await this.getCollection()).find(filter).sort(sort).skip(offset).limit(limit).toArray();
373
509
  const results = docs.map(doc => this.fromDocument(doc));
374
510
  return {
@@ -376,6 +512,55 @@ export class MongoRepository extends MemoryRepository {
376
512
  continuationToken: results.length >= limit ? (offset + limit).toString() : undefined
377
513
  };
378
514
  }
515
+ /**
516
+ * MongoDB filter of the objects a statement targets: its WHERE and the class filter, restricted to the first
517
+ * LIMIT documents when the statement has a LIMIT (MongoDB bulk writes have none)
518
+ * @param statement - the parsed statement
519
+ * @returns the filter, undefined when LIMIT is 0
520
+ */
521
+ async getStatementFilter(statement) {
522
+ const filter = this.buildFilter(statement.filter);
523
+ if (statement.limit === undefined) {
524
+ return filter;
525
+ }
526
+ if (statement.limit <= 0) {
527
+ return undefined;
528
+ }
529
+ // Collect the keys first: the update cannot meet an object twice, and LIMIT is honoured
530
+ const ids = (await (await this.getCollection())
531
+ .find(filter, { projection: { _id: 1 } })
532
+ .limit(statement.limit)
533
+ .toArray()).map(doc => doc._id);
534
+ // The WHERE is kept: a document that stopped matching since the find is left alone
535
+ return { $and: [filter, { _id: { $in: ids } }] };
536
+ }
537
+ /**
538
+ * Delete in bulk with one `deleteMany`: no per-object event (see `Repository.deleteMany`)
539
+ * @override
540
+ */
541
+ async deleteMany(statement, params) {
542
+ const parsed = await this.parseStatement("DELETE", statement, params);
543
+ const filter = await this.getStatementFilter(parsed);
544
+ if (!filter)
545
+ return 0;
546
+ return (await (await this.getCollection()).deleteMany(filter)).deletedCount;
547
+ }
548
+ /**
549
+ * Update in bulk with one `updateMany` and `$set` (dotted targets create their parents): no per-object event
550
+ * (see `Repository.updateMany`)
551
+ * @override
552
+ */
553
+ async updateMany(statement, params) {
554
+ const parsed = await this.parseStatement("UPDATE", statement, params);
555
+ const filter = await this.getStatementFilter(parsed);
556
+ if (!filter)
557
+ return 0;
558
+ const $set = {};
559
+ for (const { field, value } of parsed.assignments) {
560
+ $set[field] = value;
561
+ }
562
+ return (await (await this.getCollection()).updateMany(filter, { $set })).matchedCount;
563
+ }
379
564
  /**
380
565
  * Name of the underlying collection, used in errors
381
566
  * @returns the collection name
@@ -1 +1 @@
1
- {"version":3,"file":"mongodb.service.js","sourceRoot":"","sources":["../src/mongodb.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mongodb.service.js","sourceRoot":"","sources":["../src/mongodb.service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,19 +1,23 @@
1
1
  {
2
2
  "name": "@webda/mongo",
3
- "version": "4.0.0-beta.4",
3
+ "version": "4.0.0-beta.6",
4
4
  "description": "Implements Mongo DB on webda",
5
5
  "keywords": [
6
6
  "mongo",
7
7
  "webda"
8
8
  ],
9
9
  "author": "Remi Cattiau <remi@cattiau.com>",
10
- "repository": "git://github.com/loopingz/webda.io.git",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git+https://github.com/loopingz/webda.io.git",
13
+ "directory": "packages/mongodb"
14
+ },
11
15
  "main": "lib/index.js",
12
16
  "typings": "lib/index.d.ts",
13
17
  "dependencies": {
14
18
  "mongodb": "^7.1.1",
15
- "@webda/core": "4.0.0-beta.4",
16
- "@webda/ql": "4.0.0-beta.3"
19
+ "@webda/core": "4.0.0-beta.6",
20
+ "@webda/ql": "4.0.0-beta.6"
17
21
  },
18
22
  "files": [
19
23
  "lib",
@@ -36,8 +40,8 @@
36
40
  "typescript": "7.1.0-dev.20260929.1",
37
41
  "vite": "^6.0.0",
38
42
  "vitest": "^4.1.2",
39
- "@webda/compiler": "^4.0.0-beta.4",
40
- "@webda/test": "4.0.0-beta.3"
43
+ "@webda/compiler": "^4.0.0-beta.6",
44
+ "@webda/test": "4.0.0-beta.6"
41
45
  },
42
46
  "type": "module",
43
47
  "engines": {
package/webda.module.json CHANGED
@@ -252,6 +252,16 @@
252
252
  },
253
253
  "description": "MongoDB store parameters",
254
254
  "properties": {
255
+ "aggregationFallback": {
256
+ "default": "warn",
257
+ "description": "What to do when an aggregation on this store cannot run natively and must\nstream every matching object through memory",
258
+ "enum": [
259
+ "allow",
260
+ "warn",
261
+ "deny"
262
+ ],
263
+ "type": "string"
264
+ },
255
265
  "collection": {
256
266
  "description": "Which collection to use\n\nAll the models managed by the store share this collection, the `__type`\nfield is used to differentiate them",
257
267
  "type": "string"
@@ -275,6 +285,12 @@
275
285
  "description": "If set, Store will ignore the __type",
276
286
  "type": "boolean"
277
287
  },
288
+ "maxGroups": {
289
+ "default": 10000,
290
+ "description": "Maximum number of groups an aggregation may produce without LIMIT (or in memory)",
291
+ "minimum": 1,
292
+ "type": "number"
293
+ },
278
294
  "modelAliases": {
279
295
  "$ref": "#/definitions/modelAliases",
280
296
  "description": "Model Aliases to allow easier rename of Model"
@@ -338,10 +354,6 @@
338
354
  "additionalProperties": false,
339
355
  "description": "Represent a file to store",
340
356
  "properties": {
341
- "challenge": {
342
- "description": "Will be computed by the service\n\nhash of the content prefixed by 'WEBDA'",
343
- "type": "string"
344
- },
345
357
  "hash": {
346
358
  "description": "Will be computed by the service\n\nhash of the content",
347
359
  "type": "string"