# README
mongoose document
Example
package main
import (
"context"
"log"
"github.com/wuruipeng404/mongoose"
"go.mongodb.org/mongo-driver/bson"
)
var odm *mongoose.Mongo
// get mongo client
func init() {
var err error
if odm, err = mongoose.Open(&mongoose.Options{
User: "user",
Password: "password",
Host: "localhost",
Port: 27017,
DBName: "your-db",
DriverOpts: nil, // and you can add driver client options
}); err != nil {
log.Fatalf("connect mongoose failed:%s", err)
}
}
// define your schema
type YourSchema struct {
mongoose.Document `bson:",inline"`
FieldA string `bson:"field_a,omitempty"`
FieldB int `bson:"field_b,omitempty"`
Son *SubSchema `bson:"son,omitempty"`
*SubSchema `bson:",inline"` // inline field
}
type SubSchema struct {
FieldC string `bson:"field_c,omitempty"`
FieldD string `bson:"field_d,omitempty"`
}
// CollectionName impl mongoose.IDocument interface
func (*YourSchema) CollectionName() string {
return "your_collection"
}
func Create() {
// will auto add create time for now , and also you can set your time
// and all create method will auto find collection name
odm.InsertOne(&YourSchema{
FieldA: "test",
FieldB: 3,
SubSchema: &SubSchema{
FieldC: "111",
FieldD: "222",
},
})
// if your want to use driver method
odm.DriverCollection("your collection").InsertOne(bson.M{})
}
func HaveFilterMethod() {
// update find delete
// id support string (primitive.ObjectID.hex()) and ObjectID
var result YourSchema
odm.FindByID(id, &result)
// filter support bson and IDocument
// This is equivalent
var result2 []YourSchema
odm.Find(YourSchema{FieldA: "zhangsan"}, &result2)
odm.Find(bson.M{"field_a": "zhangsan"}, &result2)
// this is sugar
odm.Find(mongoose.Eq("field_a", "zhangsan"), &result2)
}
// release client
func Close() {
odm.Release(context.TODO())
}
# Functions
No description provided by the author
CombineFilters 用来组合多个bson.M filter operator : $and $or ...
No description provided by the author
ConvertFilter convert Struct or Ptr to bson.M.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
ParseFilter 检查filter并进行转化.
No description provided by the author
SimpleStructToDoc 没有嵌套的结构体可以使用此方法进行转化.
No description provided by the author
No description provided by the author
# Variables
No description provided by the author
No description provided by the author
# Interfaces
No description provided by the author