Перейти до основного вмісту

Провайдер

інформація

Провайдер репозиторію MongoDB надає широкий перелік методів для побудови взаємодії з документами та колекціями в базі даних MongoDB.

create

інформація

Офіційна документація метода mongoose - create

Метод create() моделі mongoose дозволяє створювати нові документи у колекції бази даних на основі переданого об'єкта або масиву об'єктів. Після створення документів, метод повертає обіцянку, що дозволяє асинхронно обробляти результати.

Структура

import mongoose from "mongoose"

export type Docs<TRawDocType, DocContents = AnyKeys<TRawDocType>> = Array<
TRawDocType | DocContents
>;
export type SaveOptions = mongoose.SaveOptions;
export type AnyKeys<T> = mongoose.AnyKeys<T>;

type Create<TRawDocType> = (
model: string,
docs: Docs<TRawDocType>,
options?: SaveOptions
) => Promise<AnyKeys<TRawDocType>>;

де:

  • Тип функції: Асинхронна.
  • Типи:
    • TRawDocType - Структура моделі колекції MongoDB.
    • Docs - Документ або масив документів, які будуть створені, та які складаються з полів структури TRawDocType.
    • SaveOptions - опції збереження документа в колекції MongoDB.
    • AnyKeys - перелік ключів з структури моделі колекції MongoDB.
  • Аргументи:
    1. Назва моделі колекції (обовʼязково).
    2. Обʼєкт документа або масив обʼєктів документів, які будуть створені (обовʼязково).
    3. Опції збереження запису (опціонально).
  • Результат:
    • Масив гідратованих документів (THydratedDocumentType), які були створені.
примітка

Гідратований документ - це документ, який пройшов обробку та валідацію бібліотекою mongoose, і може містити додаткові властивості або оброблені дані.

Реалізація

import { setMongoRepository } from '@x-fiber/proton';
import type { Provider, Agents } from '@x-fiber/proton';

type User = { name: string; surname: string, id: string }
type Repository = {
create: (data: User) => Promise<void>
}

export const BusUsersAggMongoRepository = setMongoRepository<User, Repository>({
create: async (p: Provider, agents: Agents, data: User): Promise<void> => {
try {
await p.create(data);
} catch (error) {
console.error("Error:", error);
throw error;
}
},
});

insertMany

інформація

Посилання на офіційну документацію mongoose - insertMany

Метод insertMany() моделі mongoose призначений для вставки кількох документів одночасно у колекцію бази даних. Він приймає масив об'єктів як аргумент та вставляє всі ці об'єкти в колекцію. Після вставки документів метод повертає обіцянку для асинхронної обробки результатів.

Структура

import mongoose from "mongoose"

type Docs<TRawDocType, DocContents = AnyKeys<TRawDocType>> = Array<
TRawDocType | DocContents
>;
type AnyKeys<T> = mongoose.AnyKeys<T>;
type InsertManyOptions = mongoose.InsertManyOptions
type InsertManyResult = InsertManyOptions & { lean: true };

type InsertMany<TRawDocType, DocContents = TRawDocType> = (
model: string,
docs: Docs<TRawDocType>,
options?: InsertManyOptions
) => Promise<InsertManyResult<TRawDocType>>;

де:

  • Тип функції: Асинхронна.
  • Типи:
    • TRawDocType - cтруктура моделі колекції MongoDB.
    • Docs - документ або масив документів, які будуть створені, та які складаються з полів структури TRawDocType.
    • InsertManyOptions - опції для методу insertMany.
    • AnyKeys - Тип, що відображає усі можливі ключі об'єкта структури моделы колекції TRawDocType.
    • InsertManyResult - результат вставки документів у колекцію, який містить опції збереження та додаткові властивості.
  • Аргументи:
    1. Назва моделі колекції (обовʼязково).
    2. Обʼєкт документа або масив обʼєктів документів, які будуть створені (обовʼязково).
    3. Опції збереження запису (опціонально).
  • Результат:
    • Об'єкт, що містить опції збереження та додаткові властивості, повернутий методом insertMany, з локальною оптимізацією lean.
інформація

Опція lean в методі insertMany Mongoose є параметром, який вказує, що результат повинен бути повернутий у вигляді простого JavaScript об'єкта, а не об'єктів mongoose. Використання lean призводить до зниження використання пам'яті та збільшення швидкодії операцій з базою даних, оскільки об'єкти mongoose містять додаткову інформацію та методи, які можуть займати більше пам'яті й часу обробки. Однак при використанні lean втрачається підтримка властивостей та методів mongoose, які можуть бути корисні для подальшої обробки даних. Тому використання опції lean варто враховувати з урахуванням конкретних вимог та обмежень проєкту.

Реалізація

import { setMongoRepository } from '@x-fiber/proton';
import type { Provider, Agents } from '@x-fiber/proton';

type User = { name: string; surname: string, id: string }
type Repository = {
insertMany: (data: User) => Promise<void>
}

export const BusUsersAggMongoRepository = setMongoRepository<User, Repository>({
insertMany: async (p: Provider, agents: Agents, data: User): Promise<void> => {
try {
await p.insertMany(data);
} catch (error) {
console.error("Error:", error);
throw error;
}
},
});
порада

Основна відмінність між create() і insertMany() полягає в тому, що перший призначений для створення окремого документа або кількох документів у колекції, тоді як другий призначений для вставки декількох документів як одне ціле у колекцію.

aggregate

інформація

Посилання на офіційну документацію mongoose - aggregate

Цей метод використовується для виконання складних агрегаційних операцій в MongoDB за допомогою mongoose. Він дозволяє об'єднувати, фільтрувати, групувати, обчислювати та перетворювати дані у різних колекціях за допомогою різних операцій, таких як $match, $group, $project та інші. Цей метод надає розширені можливості для аналізу даних та отримання складних результатів, які не можна отримати за допомогою простого запиту find.

Структура

небезпека

Опис структури методу aggregate знаходиться в активній розробці

Реалізація

import { setMongoRepository } from '@x-fiber/proton';
import type { Provider, Agents } from '@x-fiber/proton';

type Count = { status: string; amountField: number, limit: number }
type AggregateStructure = {
// ... structure description
}
type Repository = {
getCount: (data: Count) => Promise<AggregateStructure>
}

export const AccAccountingAggMongoRepository = setMongoRepository<Count, Repository>({
getCount: async (p: Provider, agents: Agents, data: Count): Promise<
AggregateStructure
> => {
try {
return await p.aggregate([
{
$match: {status: data.status}
},
{
$group: {
_id: '$category',
totalAmount: {$sum: '$' + data.amountField},
averageAmount: {$avg: '$' + data.amountField}
}
},
{
$sort: {totalAmount: -1}
},
{
$limit: data.limit
}
]);
} catch (error) {
console.error("Error:", error);
throw error;
}
},
});

де операції:

  • $match - Використання поля status з параметра data для фільтрації.
  • $group - Групування за полем category.
  • $sort - Сортування результатів по загальній сумі у зворотньому порядку.
  • $limit - Використання поля limit з параметра data для обмеження кількості результатів.

hydrate

інформація

Посилання на офіційну документацію mongoose - hydrate

Цей метод використовується для створення нового екземпляра моделі на основі об'єкта даних. Він приймає об'єкт даних як вхідний аргумент і повертає новий екземпляр моделі, який містить ці дані. Використання цього методу особливо корисне, коли потрібно створити новий об'єкт моделі із даними, які вже містяться у вхідному об'єкті або в форматі JSON.

populate

інформація

Посилання на офіційну документацію mongoose - populate

Цей метод використовується для заповнення полів, які містять посилання на інші колекції у MongoDB. Він дозволяє замінити значення поля посилання на повний об'єкт документа з іншої колекції. Використання цього методу допомагає уникнути необхідності вручну знаходити та додавати залежні дані до об'єктів моделей.

Структура

небезпека

Опис структури методу populate знаходиться в активній розробці

Реалізація

import { setMongoRepository } from '@x-fiber/proton';
import type { Provider, Agents } from '@x-fiber/proton';

type Count = { status: string; amountField: number, limit: number }
type AggregateStructure = {
// ... structure description
}
type Repository = {
getPopulate: (data: Count) => Promise<AggregateStructure>
}

export const AccAccountingAggMongoRepository = setMongoRepository<Count, Repository>({
getPopulate: async (p: Provider, agents: Agents, data: Count): Promise<
AggregateStructure
> => {
try {
const pipeline = [
{
$match: {status: data.status}
},
{
$group: {
_id: '$category',
totalAmount: {$sum: '$' + data.amountField},
averageAmount: {$avg: '$' + data.amountField}
}
},
{
$sort: {totalAmount: -1}
},
{
$limit: data.limit
}
];

const results = await p.aggregate(pipeline);
await p.populate(results, {path: 'relatedField', select: 'fieldName1 fieldName2'});

return results;
} catch (error) {
console.error("Error:", error);
throw error;
}
},
});

де операції:

  • pipeline - виконання агрегаційного запиту.
    • $match - використання поля status з параметра data для фільтрації.
    • $group - групування за полем category.
    • $sort - сортування результатів по загальній сумі у зворотньому порядку.
    • $limit - використання поля limit з параметра data для обмеження кількості результатів.
  • aggregate - виконання агрегації.
  • populate - гідратація результатів за допомогою методу populate.

validate

інформація

Посилання на офіційну документацію mongoose - validate

Цей метод застосовується для валідації даних у документі моделі перед їх збереженням. Він перевіряє, чи відповідають дані у документі встановленим схемним правилам. У випадку, якщо дані не відповідають вимогам схеми, метод генерує помилку.

Структура

небезпека

Опис структури методу validate знаходиться в активній розробці.

Реалізація

import { setMongoRepository } from '@x-fiber/proton';
import type { Provider, Agents } from '@x-fiber/proton';

type User = { name: string; surname: string, id: string }
type Repository = {
validate: (data: User) => Promise<void>
}

export const BusUsersAggMongoRepository = setMongoRepository<User, Repository>({
validate: async (p: Provider, agents: Agents, data: User): Promise<void> => {
try {
await newUser.validate();
} catch (error) {
console.error("Error:", error);
throw error;
}
},
});

де:

  • validate - виклик методу validate() для перевірки валідності даних згідно з моделю колекції MongoDB.

countDocuments

інформація

Посилання на офіційну документацію mongoose - countDocuments

Цей метод використовується для підрахунку кількості документів у колекції, які відповідають певному запиту. Він отримує об'єкт умови пошуку в якості параметра та повертає кількість документів, які задовольняють цій умові. Використання цього методу дозволяє отримати кількість результатів запиту перед виконанням подальших операцій.

Структура

небезпека

Опис структури методу countDocuments знаходиться в активній розробці.

Реалізація

import { setMongoRepository } from '@x-fiber/proton';
import type { Provider, Agents } from '@x-fiber/proton';

type User = { name: string; surname: string, id: string }
type Repository = {
count: (filter: { name: string }) => Promise<number>
}

export const BusUsersAggMongoRepository = setMongoRepository<User, Repository>({
count: async (p: Provider, agents: Agents, filter: { name: string }): Promise<number> => {
try {
return await p.countDocuments(filter);
} catch (error) {
console.error("Error:", error);
throw error;
}
},
});

де:

  • countDocuments - використання методу countDocuments() для підрахунку кількості документів, що відповідають фільтру.

exists

інформація

Посилання на офіційну документацію mongoose - exists

Цей метод використовується для перевірки наявності документів у колекції, які відповідають певному запиту. Приймаючи об'єкт умови пошуку як параметр, він повертає значення true, якщо в колекції присутній хоча б один документ, який відповідає цій умові, та false у протилежному випадку. Використання цього методу дозволяє ефективно перевірити наявність документів, які задовольняють певний критерій, без необхідності витягувати всі документи з колекції.

Структура

небезпека

Опис структури методу exists знаходиться в активній розробці.

Реалізація

import { setMongoRepository } from '@x-fiber/proton';
import type { Provider, Agents } from '@x-fiber/proton';

type User = { name: string; surname: string, id: string }
type Repository = {
exists: (filter: { name: string }) => Promise<boolean>
}

export const BusUsersAggMongoRepository = setMongoRepository<User, Repository>({
exists: async (p: Provider, agents: Agents, filter: { name: string }): Promise<boolean> => {
try {
return await p.exists(filter);
} catch (error) {
console.error("Error:", error);
throw error;
}
},
});

де:

  • exists - використання методу exists() для перевірки існування документа, що відповідає фільтру.

find

інформація

Посилання на офіційну документацію mongoose - find

Цей метод використовується для пошуку всіх документів у колекції, які відповідають певному запиту. Приймаючи об'єкт умови пошуку як параметр, він повертає всі документи, які задовольняють цій умові. Застосування цього методу дозволяє виконувати різні види пошукових запитів, таких як знаходження всіх документів з певним значенням поля або виконання складних пошукових операцій з використанням операторів $and, $or, $in та інших.

Структура

небезпека

Опис структури методу find знаходиться в активній розробці.

Реалізація

import { setMongoRepository } from '@x-fiber/proton';
import type { Provider, Agents } from '@x-fiber/proton';

type User = { name: string; surname: string, id: string }
type Repository = {
findMany: (filter: { name: string }) => Promise<User[] | null>
}

export const BusUsersAggMongoRepository = setMongoRepository<User, Repository>({
findMany: async (p: Provider, agents: Agents, filter: { name: string }): Promise<User[] | null> => {
try {
const users = await p.find(filter);
return users && users.length > 0 ? users : null
} catch (error) {
console.error("Error:", error);
throw error;
}
},
});

де:

  • find - використання методу find для знаходження масиву документів, що відповідають фільтру.

findById

інформація

Посилання на офіційну документацію mongoose - findById

Цей метод використовується для пошуку документа у колекції за його унікальним ідентифікатором, який, як правило, є _id. Він приймає ідентифікатор документа як параметр і повертає знайдений документ або null, якщо документ не знайдено. Використання цього методу корисно, коли ви володієте унікальним ідентифікатором документа і хочете знайти саме цей документ.

Структура

небезпека

Опис структури методу findById знаходиться в активній розробці.

Реалізація

import { setMongoRepository } from '@x-fiber/proton';
import type { Provider, Agents } from '@x-fiber/proton';

type User = { name: string; surname: string, id: string }
type Repository = {
getById: (id: string) => Promise<User | null>
}

export const BusUsersAggMongoRepository = setMongoRepository<User, Repository>({
getById: async (p: Provider, agents: Agents, id: string): Promise<User | null> => {
try {
const user = await p.findById(id);
return user ? user : null
} catch (error) {
console.error("Error:", error);
throw error;
}
},
});

де:

  • findById - використання методу findById для знаходження документа за його унікальним ідентифікатором.

findByIdAndUpdate

інформація

Посилання на офіційну документацію mongoose - findByIdAndUpdate

Цей метод призначений для двох основних завдань: пошуку документа за його унікальним ідентифікатором (зазвичай це _id) та оновлення цього документа. При виклику він отримує унікальний ідентифікатор разом з об'єктом, який містить нові дані для оновлення, а також параметри оновлення. Після цього метод знаходить вказаний документ за його ідентифікатором, виконує оновлення за поданими даними та повертає оновлений документ у відповідь. Це забезпечує зручний та ефективний механізм для виконання пошуку та оновлення даних у системі.

Структура

небезпека

Опис структури методу findByIdAndUpdate знаходиться в активній розробці.

Реалізація

import { setMongoRepository } from '@x-fiber/proton';
import type { Provider, Agents } from '@x-fiber/proton';

type User = { name: string; surname: string, id: string }
type UpdateUserArgs = {
id: string
fields: {
name?: string
surname?: string
}
}
type Repository = {
updateById: (args: UpdateUserArgs) => Promise<User | null>
}

export const BusUsersAggMongoRepository = setMongoRepository<User, Repository>({
updateById: async (p: Provider, agents: Agents, args: UpdateUserArgs): Promise<User | null> => {
try {
return await p.findByIdAndUpdate(args.id, args.fields, {new: true});
} catch (error) {
console.error("Error while creating document:", error);
throw error;
}
},
});

де:

  • findByIdAndUpdate - використання методу findByIdAndUpdate на моделі для оновлення документа за його ідентифікатором

findByIdAndDelete

інформація

Посилання на офіційну документацію mongoose - findByIdAndDelete

Використовується для знаходження документа за його унікальним ідентифікатором та видалення його з колекції. Ця операція приймає унікальний ідентифікатор та видаляє документ, що відповідає цьому ідентифікатору. Метод повертає видалений документ або null у випадку, якщо документ з вказаним ідентифікатором не знайдено.

Структура

небезпека

Опис структури методу findByIdAndDelete знаходиться в активній розробці.

Реалізація

import { setMongoRepository } from '@x-fiber/proton';
import type { Provider, Agents } from '@x-fiber/proton';

type User = { name: string; surname: string, id: string }
type Repository = {
removeById: (id: string) => Promise<void>
}

export const BusUsersAggMongoRepository = setMongoRepository<User, Repository>({
removeById: async (p: Provider, agents: Agents, id: string): Promise<void> => {
try {
await p.findByIdAndDelete(id);
} catch (error) {
console.error("Error:", error);
throw error;
}
},
});

де:

  • findByIdAndDelete - використання методу findByIdAndDelete на моделі для видалення документа за його ідентифікатором.

findOne

інформація

Посилання на офіційну документацію mongoose - findOne

Цей метод використовується для отримання першого документа з колекції, що задовольняє певний запит. Він приймає об'єкт умови пошуку як аргумент і повертає перший знайдений документ. У випадку відсутності відповідного документа метод повертає значення null. Цей підхід дозволяє отримати лише один документ, який задовольняє ваші потреби без необхідності отримувати всі можливі результати.

Структура

небезпека

Опис структури методу findOne знаходиться в активній розробці.

Реалізація

import { setMongoRepository } from '@x-fiber/proton';
import type { Provider, Agents } from '@x-fiber/proton';

type User = { name: string; surname: string, id: string }
type Repository = {
findOne: (name: string) => Promise<User | null>
}

export const BusUsersAggMongoRepository = setMongoRepository<User, Repository>({
findOne: async (p: Provider, agents: Agents, name: string): Promise<User | null> => {
try {
const user = await p.findOne(name);
return user ? user : null
} catch (error) {
console.error("Error:", error);
throw error;
}
},
});

де:

  • findOne - використання методу findOne для знаходження першого документа, який підпадає під фільтр пошуку.

findOneAndUpdate

інформація

Посилання на офіційну документацію mongoose - findOneAndUpdate

Цей метод використовується для знаходження першого документа у колекції, який відповідає певному запиту, та оновлення цього документа. Він отримує об'єкт умови пошуку, об'єкт з новими даними для оновлення, а також опції оновлення. Метод знаходить перший документ, що відповідає умовам пошуку, оновлює його відповідно до наданих даних та повертає оновлений документ.

Структура

небезпека

Опис структури методу findOneAndUpdate знаходиться в активній розробці.

Реалізація

import { setMongoRepository } from '@x-fiber/proton';
import type { Provider, Agents } from '@x-fiber/proton';

type User = { name: string; surname: string, id: string }
type UpdateSurnameArgs = {
name: string,
fields: {
surname: string
}
}
type Repository = {
update: (args: UpdateSurnameArgs) => Promise<User | null>
}

export const BusUsersAggMongoRepository = setMongoRepository<User, Repository>({
update: async (p: Provider, agents, args: UpdateSurnameArgs): Promise<User | null> => {
try {
const user = await p.findOneAndUpdate(args.name, args.fields, {new: true});
return user ? user : null;
} catch (error) {
console.error("Error:", error);
throw error;
}
},
});

де:

  • findOneAndUpdate - використання методу findOneAndUpdate для знаходження першого документа, який підпадає під фільтр пошуку та оновити в ньому відповідні поля. Опція { new: true } гарантує, що повернутий документ буде оновлений, а не оригінальний документ.

findOneAndReplace

інформація

Посилання на офіційну документацію mongoose - findOneAndReplace

Цей метод використовується для знаходження першого документа у колекції, що відповідає певному запиту, та заміни цього документа новим. Він приймає об'єкт умови пошуку та новий документ, який буде використовуватися для заміни. Після знаходження документа, який відповідає умовам пошуку, метод замінює його на новий документ та повертає оригінальний документ. Якщо нічого не знайдено, метод повертає значення null.

Структура

небезпека

Опис структури методу findOneAndReplace знаходиться в активній розробці.

Реалізація

import { setMongoRepository } from '@x-fiber/proton';
import type { Provider, Agents } from '@x-fiber/proton';

type User = { name: string; surname: string, id: string }
type ReplaceArgs = {
name: string,
fields: {
name: string
surname: string
}
}
type Repository = {
replace: (args: ReplaceArgs) => Promise<User | null>
}

export const BusUsersAggMongoRepository = setMongoRepository<User, Repository>({
replace: async (p: Provider, agents, args: ReplaceArgs): Promise<User | null> => {
try {
const user = await p.findOneAndReplace(args.name, args.fields, {new: true});
return user ? user : null
} catch (error) {
console.error("Error:", error);
throw error;
}
},
});

де:

  • findOneAndReplace - використання методу findOneAndReplace для знаходження і заміни першого документа, що відповідає фільтру.

findOneAndDelete

інформація

Посилання на офіційну документацію mongoose - findOneAndDelete

Цей метод використовується для пошуку та видалення першого документа у колекції, який відповідає певному запиту. Він отримує об'єкт умови пошуку та видаляє перший знайдений документ. Результатом роботи цього методу є видалений документ, або значення null, якщо нічого не було знайдено.

Реалізація

небезпека

Опис структури методу findOneAndDelete знаходиться в активній розробці.

Структура

import { setMongoRepository } from '@x-fiber/proton';
import type { Provider, Agents } from '@x-fiber/proton';

type User = { name: string; surname: string, id: string }
type Repository = {
remove: (name: string) => Promise<void>
}

export const BusUsersAggMongoRepository = setMongoRepository<User, Repository>({
remove: async (p: Provider, agents: Agents, name: string): Promise<void> => {
try {
// Виклик методу findOneAndDelete на моделі для знаходження і видалення першого документа, що відповідає фільтру
await p.findOneAndDelete(filter);
} catch (error) {
console.error("Error:", error);
throw error;
}
},
});

де:

  • findOneAndDelete - використання методу findOneAndDelete моделі для знаходження і видалення першого документа, що відповідає фільтру.

updateOne

інформація

Посилання на офіційну документацію mongoose - updateOne

Цей метод використовується для оновлення першого документа, який відповідає певному запиту у колекції MongoDB. Він приймає об'єкт умови пошуку та об'єкт з новими даними для оновлення. Після цього метод знаходить перший документ, що відповідає умовам пошуку, та оновлює його за наданими даними.

Структура

небезпека

Опис структури методу updateOne знаходиться в активній розробці.

Реалізація

import { setMongoRepository } from '@x-fiber/proton';
import type { Provider, Agents } from '@x-fiber/proton';

type User = { name: string; surname: string, id: string }
type UpdateArgs = {
name: string
fields: {
surname?: string
}
}
type Repository = {
update: (args: UpdateArgs) => Promise<void>
}

export const BusUsersAggMongoRepository = setMongoRepository<User, Repository>({
update: async (p: Provider, agents: Agents, args: UpdateArgs): Promise<void> => {
try {
await p.updateOne(args.name, args.fields);
} catch (error) {
console.error("Error:", error);
throw error;
}
},
});

де:

  • updateOne - використання методу updateOne моделі для оновлення першого документа, що відповідає фільтру.

updateMany

Цей метод використовується для оновлення всіх документів, що відповідають певному запиту, у колекції MongoDB. Він отримує об'єкт, що містить умови пошуку, та об'єкт з новими даними для оновлення. Після цього метод знаходить всі документи, які відповідають умовам пошуку, та оновлює їх за наданими даними.

інформація

Посилання на офіційну документацію mongoose - updateMany

Структура

небезпека

Опис структури методу updateMany знаходиться в активній розробці.

Реалізація

import { setMongoRepository } from '@x-fiber/proton';
import type { Provider, Agents } from '@x-fiber/proton';

type User = { name: string; surname: string, id: string }
type UpdateArgs = {
name: string
fields: Array<{ surname?: string }>
}
type Repository = {
updateMany: (args: UpdateArgs) => Promise<void>
}

export const BusUsersAggMongoRepository = setMongoRepository<User, Repository>({
updateMany: async (p: Provider, agents: Agents, args: UpdateArgs): Promise<void> => {
try {
await p.updateMany(args.name, args.fields);
} catch (error) {
console.error("Error:", error);
throw error;
}
},
});

де:

  • updateMany - використання методу updateMany моделі для оновлення всіх документів, що відповідають фільтру.

replaceOne

інформація

Посилання на офіційну документацію mongoose - replaceOne

Цей метод застосовується для заміни одного документа у колекції MongoDB новим документом. Він отримує об'єкт, що містить умови пошуку, та новий документ для заміни. Після цього метод знаходить перший документ, що відповідає умовам пошуку, та замінює його на наданий новий документ.

Структура

небезпека

Опис структури методу replaceOne знаходиться в активній розробці.

Реалізація

import { setMongoRepository } from '@x-fiber/proton';
import type { Provider, Agents } from '@x-fiber/proton';

type User = { name: string; surname: string, id: string }
type ReplaceArgs = {
name: string
fields: {
name: string
surname: string
}
}
type Repository = {
replace: (args: ReplaceArgs) => Promise<void>
}

export const BusUsersAggMongoRepository = setMongoRepository<User, Repository>({
replace: async (p: Provider, agents: Agents, args: ReplaceArgs): Promise<void> => {
try {
await p.replaceOne(args.name, args.fields);
} catch (error) {
console.error("Error:", error);
throw error;
}
},
});

де:

  • replaceOne - використання методу replaceOne на моделі для заміни першого документа, що відповідає фільтру.

deleteOne

інформація

Посилання на офіційну документацію mongoose - deleteOne

Цей метод використовується для вилучення першого документа, що відповідає певному запиту, з колекції MongoDB. Він отримує об'єкт, що містить умови пошуку, та виконує видалення першого знайденого документа.

Структура

небезпека

Опис структури методу deleteOne знаходиться в активній розробці.

Реалізація

import { setMongoRepository } from '@x-fiber/proton';
import type { Provider, Agents } from '@x-fiber/proton';

type User = { name: string; surname: string, id: string }
type Repository = {
remove: (name: string) => Promise<void>
}

export const BusUsersAggMongoRepository = setMongoRepository<User, Repository>({
remove: async (p: Provider, agents: Agents, name: string): Promise<void> => {
try {
await p.deleteOne(filter);
} catch (error) {
console.error("Error:", error);
throw error;
}
},
});

де:

  • deleteOne - використання методу deleteOne на моделі для видалення першого документа, що відповідає фільтру.

deleteMany

інформація

Посилання на офіційну документацію mongoose - deleteMany

Цей метод використовується для вилучення всіх документів, які задовольняють певному запиту, з колекції MongoDB. Він отримує об'єкт, який містить умови пошуку, та виконує видалення всіх знайдених документів.

Структура

небезпека

Опис структури методу deleteMany знаходиться в активній розробці.

Реалізація

import { setMongoRepository } from '@x-fiber/proton';
import type { Provider, Agents } from '@x-fiber/proton';

type User = { name: string; surname: string, id: string }
type Repository = {
remove: (name: string) => Promise<void>
}

export const BusUsersAggMongoRepository = setMongoRepository<User, Repository>({
remove: async (p: Provider, agents: Agents, name: string): Promise<void> => {
try {
return await p.deleteMany(name);
} catch (error) {
console.error("Error:", error);
throw error;
}
},
});