Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

MMDB

In-memory MongoDB Server written with pure golang to use in place of mongodb in your unit tests

Usage

Code

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
}

Cli

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

Status

Collection Command

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 ❌

Update Operators

opt -
$set ✔️
$unset ✔️
$setOnInsert ❌
$inc ❌
$min ❌
$max ❌
$mul ❌
$rename ❌
$currentDate ❌

Query Operators

opt -
$eq ❌
$gt ❌
$lt ❌
$gte ❌
$lte ❌
$exists ❌

About

in-memory mongodb written with pure go

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages