nmongo

package
v0.0.0-...-7fa2d53 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 20, 2024 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrCannotConnectToMongoDb = errors.New("cannot connect to mongodb")

DB Mongo Errors

View Source
var ErrDBNameOrCollectionNotFound = errors.New("dbName or MongoCollectionName not defined")
View Source
var ErrMongoDbUnavailable = errors.New("unable to check connection to mongodb")
View Source
var ErrRecordAlreadyExists = errors.New("record already exists")

Records errors

View Source
var ErrRecordCannotDecodeData = errors.New("cannot decode cursor data")
View Source
var ErrRecordCannotReadData = errors.New("cannot read data. Cursor error")
View Source
var ErrRecordInserting = errors.New("error inserting the record")
View Source
var ErrRecordNotFound = errors.New("data not found")
View Source
var ErrRecordSearching = errors.New("error searching for a record")
View Source
var ErrRecordUpdating = errors.New("error updating the record")
View Source
var ErrUnableToCreateCollection = errors.New("cannot create MongoCollection name")

Functions

func JSONToBSON

func JSONToBSON(json []byte) (bson.M, error)

Преобразование JSON в bson.M

func StructToBSON

func StructToBSON(data interface{}) (dataBSON []byte, err error)

Преобразование Struc в bson.M

Types

type Cursor

type Cursor struct {
	// contains filtered or unexported fields
}

func (*Cursor) Close

func (cursor *Cursor) Close()

Следующая запись

func (*Cursor) Decode

func (cursor *Cursor) Decode(data interface{}) (err error)

Преобразование

func (*Cursor) Next

func (cursor *Cursor) Next() bool

Следующая запись

type NMongo

type NMongo struct {
	Repo *Repository
	// contains filtered or unexported fields
}

Главный класс для Mongo

func New

func New(addr string, port int, user string, password string, dbName string, collectionNames interface{}) *NMongo

Создание объекта NMongo

func (*NMongo) Connect

func (nmongo *NMongo) Connect(ctx context.Context) error

Соединение с Mongo

type Repository

type Repository struct {
	Name        string
	Collections RepositoryCollections
	// contains filtered or unexported fields
}

Репозитарий для Mongo

type RepositoryCollection

type RepositoryCollection struct {
	Name string
	// contains filtered or unexported fields
}

Коллекция Mongo

func (*RepositoryCollection) Exists

func (collection *RepositoryCollection) Exists(ctx context.Context, filter interface{}) (ret bool, err error)

Проверка существует ли запись по фильтру

func (*RepositoryCollection) Find

func (collection *RepositoryCollection) Find(ctx context.Context, filter interface{}) (cursor *Cursor, err error)

Поиск записей по фильтру

  Пример:
	 collection := nmongo.Repo.Collections.Collection(ms.collectionNames.Transactions)
	 cursor, err := collection.Find(ctx, filter)
	 if err != nil {
        return
   	 }
	 defer cursor.Close()

	 filter := bson.M{"txnId": data.TxnId}
	 record := &entity.Transaction{}
	 for cursor.Next() {
	 	cursor.Decode(record)
	 	fmt.Println(record)
	 }

func (*RepositoryCollection) FindId

func (collection *RepositoryCollection) FindId(ctx context.Context, id string, data interface{}) error

Поиск записи по Id Пример: data = &<struct>{} err = Collections.Collection(<name>).FindId(recId, data) data - значение записи вернутся сюда

func (*RepositoryCollection) FindOne

func (collection *RepositoryCollection) FindOne(ctx context.Context, filter interface{}, data interface{}) (err error)

Поиск одной записи по фильтру

func (*RepositoryCollection) FindToStruct

func (collection *RepositoryCollection) FindToStruct(ctx context.Context, filter interface{}, data interface{}) ([]interface{}, error)

Выбор данных по фильтру и пребразование в структуру

 Пример:
	filter := bson.M{}
	filter["txnId"] = <id>
	txnData := &entity.Transaction{}
	datas, err := FindToStruct(ctx, &filter, txnData)

	if len(datas) > 0 {
		txnData = datas[0].(*entity.Transaction)
	}

func (*RepositoryCollection) FindToStruct2

func (collection *RepositoryCollection) FindToStruct2(ctx context.Context, filter interface{}, data interface{}) ([]interface{}, error)

Выбор данных по фильтру и пребразование в структуру

 Пример:
	filter := bson.M{}
	filter["txnId"] = <id>
	txnData := &entity.Transaction{}
	datas, err := FindToStruct2(ctx, &filter, txnData)

	if len(datas) > 0 {
		txnData = datas[0].(*entity.Transaction)
	}

func (*RepositoryCollection) InsertOne

func (collection *RepositoryCollection) InsertOne(ctx context.Context, data interface{}) (recId string, err error)

Вставка записи в коллекцию

func (*RepositoryCollection) UpdateMany

func (collection *RepositoryCollection) UpdateMany(ctx context.Context, filter interface{}, data interface{}) (*mongo.UpdateResult, error)

Обновить несколько записей в коллекции по фильтру

Пример:
Условие обновления (например, по полю "name")
filter := bson.M{"name": "John Doe"}
Новое значение поля "age"
data := bson.M{"age": 30}
updateResult, err := collection.UpdateMany(filter, data)

func (*RepositoryCollection) UpdateOne

func (collection *RepositoryCollection) UpdateOne(ctx context.Context, filter interface{}, data interface{}) (*mongo.UpdateResult, error)

Обновить одну запись в коллекции по фильтру

Пример:
Условие обновления (например, по полю "name")
filter := bson.M{"name": "John Doe"}
Новое значение поля "age"
data := bson.M{"age": 30}
updateResult, err := collection.UpdateOne(filter, data)

type RepositoryCollections

type RepositoryCollections struct {
	// contains filtered or unexported fields
}

Коллекции Mongo

func (*RepositoryCollections) AddByName

func (objs *RepositoryCollections) AddByName(name string) *RepositoryCollection

Добавление коллекции в репозитарий по имени

func (*RepositoryCollections) Collection

func (objs *RepositoryCollections) Collection(name string) *RepositoryCollection

Получение коллекции из репозитария по имени

func (*RepositoryCollections) CollectionByNum

func (objs *RepositoryCollections) CollectionByNum(num int) *RepositoryCollection

Получение коллекции из репозитария по номеру

func (*RepositoryCollections) Number

func (objs *RepositoryCollections) Number() int

Колличество коллекций

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL