mongodb + Golang及Model设计

本文介绍MongoDB的基本操作方法,包括安装、启动服务、数据库及集合管理等,并通过Go语言示例展示了如何使用抽象工厂模式进行数据库连接及用户数据的增删查操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mongodb

安装

操作

  • 启动后台服务程序
mongod  # 如果是默认的数据路径需要root权限, 可以修改数据存储位置。
  • 进入命令行
mongo

>>> show databases  # 列出数据库
>>> use {database_name}     # 切换db指针到某个数据库
>>> show collections    # 展示所有的collections (tables)
>>> db.{collection_name}.find() # 列出所有元素
.pretty()   # 以格式化的json形式展示结果

>>> db.{c_name}.insert({json})  # 插入
>>> db.{c_name}.remove({'title': 'what'})   # 删除指定条件元素

Go 操作Mongodb + 抽象工厂模式设计

import "gopkg.in/mgo.v2"

/** Databaser is An abstract factory interface, if you want to add a new database backend, you must implement all function*/
type Databaser interface {
    iUser
}

func GetDatabaseConncect(db string) (Databaser) {
    if db == "mongodb" { return newMongodb()}
    panic("db is not the validate database backend.")
    return nil
}

// anonymous member, we can directly point the final function, such as AddUser.
type Mongodb struct{
    MongodbUser
}

/** The models definition and corresponding interface. */
type User struct {
    // user'name or oauth2 website username
    Username    string
    // oauth2 authenticated website
    Source      string
}

type iUser interface {
    AddUser(user User) (error)
    DeleteUser(user User) (error)
    SelectUser(pairs map[string]string) ([]User, error)
}

type MongodbUser struct {
    database    string
    collection  string  `collection name`
}

// Mongodb's construction, also construct it's interface implementation struct, i.e. subclass.
func newMongodb() (*Mongodb){
    var mdb = new(Mongodb)
    // construct All databases name and collections name, need to be explicit.
    mdb.MongodbUser.database = "Mongodb";
    mdb.MongodbUser.collection = "Users";   // table name.
    return mdb
}

func (self MongodbUser) AddUser(user User) (error) {
    session, err := mgo.Dial(MONGO_DB_SEVER)
    if err != nil {
        return err
    }
    defer session.Close()
    session.SetSafe(&mgo.Safe{})

    c := session.DB(self.database).C(self.collection)
    err = c.Insert(&user)       // It can insert not only one Object, it acquires "...&interface"
    if err != nil {
        return err
    }
    return nil;
}

func (self MongodbUser) DeleteUser(user User) (error) {
    return nil;
}

func (self MongodbUser) SelectUser(pairs map[string]string) ([]User, error) {
    return nil, nil;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值