npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

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 字段, 详细参考:createIndexesindexSpecs; mongo-createIndexes是官方的明细。

接口说明

conn(mongoConfig)

 进行数据库连接,默认的时候不需要调用该函数,因为在创建 MongoAdapt 已经调用过了;但是也可以自己手动调用该函数重新进行数据库连接。

close(clientName)

 关闭某个数据库连接,clientName 就是进行数据库连接时的连接名。如果某个数据库连接只使用一次,可以使用该函数进行断开。一旦断开后,对于数据库的CRUD操作则不被允许。

closeAll()

 断开所有的数据库连接。

db({})

 获取数据库对象, 对应于 DB,参数如下:

  • client: String,数据库连接名
  • dbString,数据库名称

collection(connname, dbConfig)

 获取数据集,对应于 Collection,参数如下:

  • connname: String,数据集的名称
  • dbConfigObject,调用 db({}) 函数的参数一致,包括 clientdb

insert(connname, docs, insertOptions, options)

 往数据集中插入文档

  • connnameString,数据集的名称(connection name)
  • docsArray|Object,如果类型为 Array,则往数据集中插入多条数据,调用原生的 insertMany;否则插入一条文件,调用 insertOne
  • insertOptions:调用 insertManyinsertOne时的第二个参数;详情参考:insertManyinsertOne
  • options: Object{client, db},用于进行切换数据库时调用,如果使用默认的连接和数据库,则可以不传递该参数。

find(connname, query, findOptions, options)

 查询多条文档,参考:find,其中 queryfindOptions 参数即为调用原生的 find(query, options) 时需要的参数

  • connnameString,数据集的名称(connection name)
  • query: Object,查询条件
  • findOptions: Object,查询的配置,这里面除了和原生的findoptions保持一致外,对了一个配置 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 类型作为查询条件

  • optionsObject{client, db, raw}
    • rawBoolean,递的 id 是否需要转换为 ObjectId 类型,true 为不转换,false 为转换(默认)

count(connname, query, countOptions, options)

 统计符合体条件的文档数量,参考:countDocuments

update(connname, filter, update, updateOptions, options)

 更新文档,注意 update 参数需要 operator,参考:updateManyupdateOne

  • optionsObject{client, db, multi: true}
    • multiBoolean 是否更新多条文档,默认为true;区别是调用 updateMany 还是 updateOne

upset(connname, filter, doc, options|upsert)

 更新文档,使用 $set 操作

  • docObject 更新文档字段内容
  • options|upsertoptions - Object | upsert - Boolean;如果值的类型为 Boolean 类型的,则表示传递的是 upsert 参数,使用的数据库连接为默认的,并且表示更新多条符合条件的记录;同时也支持对象形式参数 Object{ client, db, multi: true, upsert }

upsetById(connname, _id, doc, options|upsert)

  根据 _id 修改文档, 使用 $set 操作符

  • _idString,不需要转换为 ObjectId 类型,会自动进行转换
  • optionsoptions - Object | upsert - Boolean;如果值的类型为 Boolean 类型的,则表示传递的是 upsert 参数,使用的数据库连接为默认的,并且 _id 将会转换为 ObjectId 类型;也支持参数为对象 Object{ client, db, raw, upsert }

delete(connname, filter, deleteOptions, options)

 删除文档,详细:deleteManydeleteOne

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