Method
Function
✔️
db.collection.count()
collection.Count()
✔️
db.collection.delete()
collection.Delete()
✔️
db.collection.find()
collection.Find()
✔️
db.collection.findMany()
collection.FindMany()
✔️
db.collection.insert()
collection.Insert()
✔️
db.collection.replaceOne()
collection.Replace()
Mongo in Docker is useful for testing purposes. Please, check *_test.go
files in the /collection
directory for
examples.
package main
import (
"context"
"entrlcom.dev/mongox/docker"
)
func main () {
ctx := context .Background ()
mongo , err := docker .NewMongo (ctx )
if err != nil {
// TODO: Handle error.
return
}
defer func () {
// TODO: Handle error.
_ = mongo .Shutdown (ctx ) //nolint:errcheck // OK.
}()
client := mongo .GetClient ()
// ...
}
Operator
Function
❌
$all
✔️
$elemMatch
query.ElemMatch()
❌
$size
Operator
Function
❌
$bitsAllClear
❌
$bitsAllSet
❌
$bitsAnyClear
❌
$bitsAnySet
Comparison Query Operators
Operator
Function
✔️
$eq
query.Eq()
✔️
$gt
query.Gt()
✔️
$gte
query.Gte()
✔️
$in
query.In()
✔️
$lt
query.Lt()
✔️
$lte
query.Lte()
✔️
$ne
query.Ne()
✔️
$nin
query.Nin()
Operator
Function
❌
$exists
❌
$type
Evaluation Query Operators
Operator
Function
❌
$expr
❌
$jsonSchema
❌
$mod
❌
$regex
❌
$text
❌
$where
Geospatial Query Operators
Operator
Function
❌
box
❌
center
❌
centerSphere
❌
geoIntersects
❌
geoWithin
❌
geometry
❌
maxDistance
❌
minDistance
❌
near
❌
nearSphere
❌
polygon
Operator
Function
✔️
$and
query.And()
✔️
$or
query.Or()
✔️
$nor
query.Nor()
✔️
$not
query.Not()
Operator
Function
❌
$addToSet
❌
$each
❌
$pop
❌
$position
❌
$pull
❌
$pullAll
❌
$push
❌
$slice
❌
$sort
Operator
Function
❌
$currentDate
❌
$inc
❌
$max
❌
$min
❌
$mul
❌
$rename
❌
$set
❌
$setOnInsert
❌
$unset
package main
import (
"context"
"time"
"entrlcom.dev/mongox/collection"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
type Person struct {
DataOfBirth time.Time `bson:"data_of_birth,omitempty"`
Name string `bson:"name,omitempty"`
TimeCreated time.Time `bson:"time_created,omitempty"`
}
type Repository struct {
client * mongo.Client
collection * mongo.Collection
}
func (x Repository ) Create (ctx context.Context , person Person ) error {
return collection.Insert [Person ](x .collection ).Insert (ctx , person )
}
func NewRepository (client * mongo.Client ) Repository {
return Repository {
client : client ,
collection : client .Database ("example" ).Collection ("person" ),
}
}
func main () {
ctx := context .Background ()
client , err := mongo .Connect (ctx , options .Client ().ApplyURI ("mongodb://127.0.0.1:27017" ))
if err != nil {
// TODO: Handle error.
return
}
repository := NewRepository (client )
if err := repository .Create (ctx , Person {
DataOfBirth : time .Date (2020 , time .May , 15 , 0 , 0 , 0 , 0 , time .UTC ),
Name : "John Doe" ,
TimeCreated : time .Now ().UTC (),
}); err != nil {
// TODO: Handle error.
return
}
// ...
}
package main
import (
"entrlcom.dev/mongox/operator/query"
)
func main () {
filter := query .And (
query .Or (
query .Eq ().Field ("name" ).String ("Jane" ),
query .Eq ().Field ("name" ).String ("John" ),
),
query .Eq ().Field ("id" ).String ("1" ),
)
// {
// "$and": [
// {
// "$or": [
// {
// "name": {
// "$eq": "Jane"
// }
// },
// {
// "name": {
// "$eq": "John"
// }
// }
// ]
// },
// {
// "id": {
// "$eq": "1"
// }
// }
// ]
// }
}
MIT