mongo

package
v0.0.0-...-f111e62 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 12, 2017 License: MIT Imports: 19 Imported by: 0

README

Mongo Data Source

Provides SQL Access to Mongo via the DataUX Mysql Proxy Service.

mongo dataux

mysql -h 127.0.0.1 -P4000


-- Create a new schema = "dbx1" with one source being
-- a mongo database called "mgo_datauxtest"

CREATE source mgo_datauxtest WITH {
  "type":"mongo",
  "schema":"dbx1",
  "hosts": ["localhost:28017"]
};

-- DB_NAME = existing database in mongo

-- WITH Properties:
-- "schema":  Name of schema to attach this source to
-- "type":  Source type, most be datasource registered in registry (mongo, bigtable, etc)

CREATE source DB_NAME WITH json_properties


use dbx1;

show tables;

describe article;

select * from article;



Documentation

Index

Constants

View Source
const (
	ListenerType = "mongo"
)

Variables

View Source
var (
	DefaultLimit = 20
)

Functions

func NewMongoDataSource

func NewMongoDataSource() schema.Source

Types

type MongoDataSource

type MongoDataSource struct {
	// contains filtered or unexported fields
}

Mongo Data Source implements qlbridge DataSource interfaces to mongo server - singleton shared across all sessions/connections - creates connections by mgo.Session.Clone()

func (*MongoDataSource) Close

func (m *MongoDataSource) Close() error

func (*MongoDataSource) DataSource

func (m *MongoDataSource) DataSource() schema.Source

func (*MongoDataSource) Init

func (m *MongoDataSource) Init()

func (*MongoDataSource) Open

func (m *MongoDataSource) Open(collectionName string) (schema.Conn, error)

func (*MongoDataSource) Setup

func (m *MongoDataSource) Setup(ss *schema.SchemaSource) error

func (*MongoDataSource) Table

func (m *MongoDataSource) Table(table string) (*schema.Table, error)

func (*MongoDataSource) Tables

func (m *MongoDataSource) Tables() []string

type ResultReader

type ResultReader struct {
	*exec.TaskBase

	Docs     []u.JsonHelper
	Vals     [][]driver.Value
	Total    int
	Aggs     u.JsonHelper
	ScrollId string
	// contains filtered or unexported fields
}

Mongo ResultReader implements result paging, reading - driver.Rows

func NewResultReader

func NewResultReader(req *SqlToMgo, q *mgo.Query, limit int) *ResultReader

func (*ResultReader) Close

func (m *ResultReader) Close() error

func (*ResultReader) Run

func (m *ResultReader) Run() error

type ResultReaderNext

type ResultReaderNext struct {
	*ResultReader
}

A wrapper, allowing us to implement sql/driver Next() interface

which is different than qlbridge/datasource Next()

type SqlToMgo

type SqlToMgo struct {
	*exec.TaskBase
	// contains filtered or unexported fields
}

SqlToMgo Rewrite a Sql AST statement to a Mongo request

  • Walk the AST and see what can be pushed down and what can't
  • try to poly-fill the missing pieces
  • stateful single use request

func NewSqlToMgo

func NewSqlToMgo(table *schema.Table, sess *mgo.Session) *SqlToMgo

NewSqlToMgo create sql to mongo converter

func (*SqlToMgo) Columns

func (m *SqlToMgo) Columns() []string

Columns return list of column names

func (*SqlToMgo) WalkExecSource

func (m *SqlToMgo) WalkExecSource(p *plan.Source) (exec.Task, error)

func (*SqlToMgo) WalkSourceSelect

func (m *SqlToMgo) WalkSourceSelect(planner plan.Planner, p *plan.Source) (plan.Task, error)

WalkSourceSelect An interface implemented by this connection allowing the planner to push down as much logic into mongo as possible

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL