In-memory MongoDB Server written with pure golang to use in place of mongodb in your unit tests
import (
"fmt"
"github.com/sankooc/mmdb/db"
"context"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
)
func mockMongo() error {
server, err := db.NewServerAddr(":22222", nil)
if err != nil {
return err
}
server.Start()
fmt.Println("mongodb_started")
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://127.0.0.1:22222"))
defer cancel()
if err != nil {
return err
}
collection := client.Database("test").Collection("usr")
doc := bson.M{"name": "sankooc", "age": 30}
_, err = collection.InsertOne(ctx, doc)
if err != nil {
return err
}
filter := bson.M{}
err = collection.FindOne(ctx, filter).Decode(&doc)
if err != nil {
return err
}
fmt.Println(doc)
return nil
}package main
import (
"github.com/sankooc/mmdb/db"
)
func main() {
server, err := db.NewServerAddr(":22222", nil)
if err != nil {
panic(err)
}
server.Start()
server.Wait()
}connect witch mongo-cli
mongo --port 22222
| opt | - |
|---|---|
| insertOne | ✔️ |
| find | ✔️ |
| update | ✔️ |
| insert | ✔️ |
| deleteOne | ✔️ |
| insertMany | ✔️ |
| count | ✔️ |
| countDocuments | ❌ |
| findOne | ✔️ |
| deleteMany | ❌ |
| replaceOne | ❌ |
| findAndModify | ❌ |
| findOneAndReplace | ❌ |
| findOneAndUpdate | ❌ |
| save | ❌ |
| drop | ❌ |
| updateMany | ❌ |
| remove | ❌ |
| bulkWrite | ❌ |
| dropIndex | ❌ |
| getDB | ❌ |
| updateOne | ❌ |
| mapReduce | ❌ |
| getIndexKeys | ❌ |
| getWriteConcern | ❌ |
| stats | ❌ |
| convertToSingleObject | ❌ |
| estimatedDocumentCount | ❌ |
| getIndexSpecs | ❌ |
| storageSize | ❌ |
| exists | ❌ |
| getIndexes | ❌ |
| explain | ❌ |
| getIndices | ❌ |
| createIndex | ❌ |
| hideIndex | ❌ |
| renameCollection | ❌ |
| createIndexes | ❌ |
| getName | ❌ |
| initializeOrderedBulkOp | ❌ |
| totalIndexSize | ❌ |
| dataSize | ❌ |
| getPlanCache | ❌ |
| totalSize | ❌ |
| findOneAndDelete | ❌ |
| getQueryOptions | ❌ |
| aggregate | ❌ |
| opt | - |
|---|---|
| $set | ✔️ |
| $unset | ✔️ |
| $setOnInsert | ❌ |
| $inc | ❌ |
| $min | ❌ |
| $max | ❌ |
| $mul | ❌ |
| $rename | ❌ |
| $currentDate | ❌ |
| opt | - |
|---|---|
| $eq | ❌ |
| $gt | ❌ |
| $lt | ❌ |
| $gte | ❌ |
| $lte | ❌ |
| $exists | ❌ |