mongo-adapt
v0.0.11
Published
对于 mongodb 进行简单的封装,便于使用
Downloads
24
Readme
mongo-adapt
对于 mongodb
的使用进行一个简单的封装。轻量化,没有做格式化验证。后续会不段的添加新的函数。
安装
npm install mongo-adapt
使用
连接 mongo
const MongoAdapt = require('mongo-adapt');
const mongoAdapt = new MongoAdapt(mongoConfig, indexes);
mongoConfig
-- 连接到 mongo 的配置地址,必须是 Object
类型的。如下格式:
{
"name1": "mongodb://192.168.1.70:27017/test"
}
如果是这样的, 则 key
为连接名,为每一个数据库连接取一个连接名,方便后续使用;value
为数据库连接地址,最好将常用的数据库放到连接地址上,这样就不需要在每一次使用的时候,都传递使用的数据库。
如果需要连接多个地址,则在配置里面继续添加。最先配置的作为默认使用的连接。
如果不想直接将数据库拼到连接地址上,也可以通过配置的形式进行分开。
{
"name1": {
"url": "mongodb://192.168.1.70:27017", // 数据库连接地址
"db": "test" // 默认使用的数据库名称
}
}
后续的对于数据库的操作包括增删改查(CRUD),则使用上面创建的 mongoAdapt
;例如:
mongoAdapt.conn()
mongoAdapt.close()
mongoAdapt.find()
mongoAdapt.update()
mongoAdapt.delete()
mongoAdapt.aggregate()
indexes
-- 在连接数据库成功后, 创建索引。如下格式:
{
// name1 必须跟配置数据库连接时的 key 保持一致
name1: [{
db: 'workstation', // 数据库名称
name: 'users', // 表名(collection)
indexes: [{
key: { tel: 1 },
unique: true,
background: true
}] // 所有的索引 -- createIndexes()
}]
}
关于里面的 indexes
字段, 详细参考:createIndexes的indexSpecs
; mongo-createIndexes是官方的明细。
接口说明
conn(mongoConfig)
进行数据库连接,默认的时候不需要调用该函数,因为在创建 MongoAdapt
已经调用过了;但是也可以自己手动调用该函数重新进行数据库连接。
close(clientName)
关闭某个数据库连接,clientName
就是进行数据库连接时的连接名。如果某个数据库连接只使用一次,可以使用该函数进行断开。一旦断开后,对于数据库的CRUD操作则不被允许。
closeAll()
断开所有的数据库连接。
db({})
获取数据库对象, 对应于 DB,参数如下:
- client:
String
,数据库连接名 - db:
String
,数据库名称
collection(connname, dbConfig)
获取数据集,对应于 Collection,参数如下:
- connname:
String
,数据集的名称 - dbConfig:
Object
,调用db({})
函数的参数一致,包括client
和db
insert(connname, docs, insertOptions, options)
往数据集中插入文档
- connname:
String
,数据集的名称(connection name) - docs:
Array|Object
,如果类型为Array
,则往数据集中插入多条数据,调用原生的insertMany
;否则插入一条文件,调用insertOne
- insertOptions:调用
insertMany
或insertOne
时的第二个参数;详情参考:insertMany、insertOne - options:
Object{client, db}
,用于进行切换数据库时调用,如果使用默认的连接和数据库,则可以不传递该参数。
find(connname, query, findOptions, options)
查询多条文档,参考:find,其中 query
和 findOptions
参数即为调用原生的 find(query, options)
时需要的参数
- connname:
String
,数据集的名称(connection name) - query:
Object
,查询条件 - findOptions:
Object
,查询的配置,这里面除了和原生的find
的options
保持一致外,对了一个配置page
表明查询第几页的数据,默认为 1,做分页查询时使用,这个时候,同时需要配置limit
默认为 10 - options:
Object{client, db}
,用于进行切换数据库时调用,如果使用默认的连接和数据库,则可以不传递该参数。
findOne(connname, query, findOptions, options)
查询第一条匹配的文档,findOne
findById(connname, id, projection, options)
根据 id 查询文档,如果传递的参数 options.raw = true 则不会将 id 转换为 ObjectID 类型进行查找;否则在查询的时候会将 id 转换为 ObjectID 类型作为查询条件
- options:
Object{client, db, raw}
- raw:
Boolean
,递的 id 是否需要转换为 ObjectId 类型,true 为不转换,false 为转换(默认)
- raw:
count(connname, query, countOptions, options)
统计符合体条件的文档数量,参考:countDocuments
update(connname, filter, update, updateOptions, options)
更新文档,注意 update
参数需要 operator
,参考:updateMany、updateOne
- options:
Object{client, db, multi: true}
- multi:
Boolean
是否更新多条文档,默认为true;区别是调用updateMany
还是updateOne
- multi:
upset(connname, filter, doc, options|upsert)
更新文档,使用 $set
操作
- doc:
Object
更新文档字段内容 - options|upsert:
options - Object | upsert - Boolean
;如果值的类型为Boolean
类型的,则表示传递的是upsert
参数,使用的数据库连接为默认的,并且表示更新多条符合条件的记录;同时也支持对象形式参数Object{ client, db, multi: true, upsert }
upsetById(connname, _id, doc, options|upsert)
根据 _id
修改文档, 使用 $set
操作符
- _id:
String
,不需要转换为ObjectId
类型,会自动进行转换 - options:
options - Object | upsert - Boolean
;如果值的类型为Boolean
类型的,则表示传递的是upsert
参数,使用的数据库连接为默认的,并且_id
将会转换为ObjectId
类型;也支持参数为对象Object{ client, db, raw, upsert }
delete(connname, filter, deleteOptions, options)
删除文档,详细:deleteMany、deleteOne
deleteById(connname, _id, options)
根据 _id
删除文档
- options:
Object{ client, db, raw }
createIndex(connname, fieldOrSpec, indexOption, options)
创建索引, 详情参见文档:createIndex
createIndexes(connname, indexSpecs, options)
创建多条索引, 详细:createIndexes
aggregate(connname, pipeline, options)
执行管道操作,aggregate