Skip to content

clonable-eden/pooled_mongo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pooled_mongo

Connection pool for mongodb via poolboy.

Configuration

Add below to your app.config.

  {pooled_mongo,
    [
      {global_or_local, local},
      {pools,
        [
          {mongo_pool1,
            [
              {size, 10},
              {max_overflow, 20}
            ],
            [
              {host, "127.0.0.1"},
              {port, 27017},
              {database, <<"test">>},
              {connect_timeout, 500},
              {w_mode, safe},
              {r_mode, slave_ok}
            ]
          }
        ]
      }
    ]
  }

Usage

If you use any pool, available functions are:
insert/3, update/4, update/6, delete/3, delete_one/3, find_one/3, find_one/4, find/3, find/4, count/3, count/4, ensure_index/3, command/2, execute/2

If you retrieve one of the pools, use pool/0 or choose from the result of pools/0.

If you use random pool, available functions are: insert2/2, update2/3, update2/5, delete2/2, delete_one2/2, find_one2/2, find_one2/3, find2/2, find2/3, count2/2, count2/3, ensure_index2/2, command2/1, execute2/1

Example

> application:start(pooled_mongo).
> PoolId = pooled_mongo:pool().
> {ok, Result} = pooled_mongo:find_one(PoolId, <<"test">>, {<<"key">>, <<"value">>}).
  (Result may be Map)
> {ok, Result} = pooled_mongo:find_one2(<<"test">>, {<<"key">>, <<"value">>}).
  (Result may be Map)

TODO

  • Behavior for no connection. (Badmatch occurs in poolboy for now.)
  • Behavior to reconnect. (should be like eredis.)
  • Functions to create/delete pool dynamically.