Socket
Book a DemoInstallSign in
Socket

gopkg.in/noxue/mgodb.v1

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

gopkg.in/noxue/mgodb.v1

Go
Version
v1.0.2-0.20181227112420-51e90dc5690a
Version published
Created
Source

Mgodb

Orm Active Record http://en.wikipedia.org/wiki/ActiveRecord for mongodb, wrapper from http://labix.org/v2/mgo Example usage in framework http://robfig.github.io/revel/ see example/init.revel.go and example/model.revel.go, support hooks concept from https://github.com/coopernurse/gorp

CRUD

Example usage default CRUD:

var err error
user := models.NewUser()
user.Username = "Bar"
user.Password = "ssdf"
err = user.Save() //Insert object
if err != nil {
    panic(err)
}
fmt.Println(user)
user.Username = "Foo"
err = user.Save() //Update object
if err != nil {
    panic(err)
}
fmt.Println(user)
loadUser, err := models.FindUser(user.GetId()) //Get object
if err != nil {
    panic(err)
}
fmt.Println(loadUser)
loadUser.Username = "NewFoo"
err = loadUser.Save() //Update object
if err != nil {
    panic(err)
}
fmt.Println(loadUser)
err = loadUser.Delete() //Delete object
if err != nil {
    panic(err)
}

More examples

Example search one by field "Username" = "Foo":

user, err := models.FindUserBy(&models.User{Username: "Foo"})
if err != nil {
  panic(err)
}
fmt.Println(user.GetId())//Get object
user.Username = "Bar"
err = user.Save() //Update object
if err != nil {
  panic(err)
}
fmt.Println(user.GetId())

Example get count by field "Username" = "Foo":

count, err := models.CountUsers(&models.User{Username: "Foo"})
if err != nil {
  panic(err)
}
fmt.Println(count)

Example get all by field "Username" = "Bar":

query := mgodb.Query{QueryDoc: &models.User{Username: "Bar"}, Limit: 0, Skip: 0}
users, err := models.FindUsers(query) //Get users
if err != nil {
  panic(err)
}
for _, item := range users {
  item.Username = "Foo"
  if err = item.Save(); err != nil { //Update users
    panic(err)
  }
}

查询所有

query := mgodb.Query{QueryDoc: bson.M{}, Limit: 0, Skip: 0}
users, err := models.FindUsers(query) //查询所有用户

批量查询选择指定字段

query := mgodb.Query{QueryDoc: bson.M{},Selector: map[string]bool{"name": true}, Limit: 0, Skip: 0}
users, err := models.FindUsers(query) //查询所有用户

如果不指定,则查出所有字段

排序

query := mgodb.Query{
    Limit:    size,
		Skip:     (page - 1) * size,
		Selector: map[string]bool{"name": true},
	}

query.SetSortFields([]string{"name"})

if userGroup != nil {
	query.QueryDoc = userGroup
} else {
	query.QueryDoc = bson.M{}
}

ug := model.NewUserGroup()
err = ug.FindAll(query, &userGroups)
    ```

### Hooks ###

Use hooks to before/after saving/delete to the db.
```go
//Full list of hooks that you can implement:
func (self *SomeModelName) BeforeInsert() error {}
func (self *SomeModelName) AfterInsert() error {}

func (self *SomeModelName) BeforeUpdate() error {}
func (self *SomeModelName) AfterUpdate() error {}

func (self *SomeModelName) BeforeDelete() error {}
func (self *SomeModelName) AfterDelete() error {}

FAQs

Package last updated on 27 Dec 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts