node-mongodb-native源码快速阅读-1

Collection(db, collectionName, pkFactory): 

一个构造函数,主要由三个重要的fields: db, collectionName, pkFactory.

 

 

insert(docs, options, callback): 

Collection的方法,最主要的任务就是检查参数,特别当第一个参数docs不是数组的时候,要套上[]成为一个数组类型的参数,然后调用insertAll。

 

checkCollectionName(collectionName):

主要就是检查collection name是否合乎要求,比如它必须是一个String类型、不能为空字符串等等。

 

 

remove(selector, options, callback):

构造DeleteCommand,然后执行db中的executeCommand方法,如果options中设定safe为true则还会调用db的error方法,检查last error返回的状态。

 

rename(collectionName, callback):

更改collection的名字,首先还是调用checkCollectionName检查参数collectionName是否合法,然后则会调用db的renameCollection方法做实际的操作。

 

insertAll(docs, options, callback):

构造InsertCommand,对参数docs数组中的没一个元素检查其是否已经拥有了一个_id,如果没有则调用pkFactory的createPk产生一个,需要调用insertCommand的add放将每一个整理后的doc插入进去,然后执行db中的executeCommand方法,callback的第二个参数返回的插入的docs数组(包含了_id)。

 

save(doc, options, callback):

 

如果doc已经包含了_id,则会调用update方法,根据第一个参数是_id选择符,第二个参数使用upsert为ture和根据options决定的safe的值;如果doc不包含_id,则调用insert方法,第一个参数是doc,第二个参数则是根据options设置safe的值。也就是说save会根据doc是否包含_id来决定是继续调用update还是insert方法。

 

update(spec, document, options, callback):

 

参数spec就是一个选择符,就是根据它来查找符合更新条件的document,第二个参数决定了要将查找到document更新成什么样子,第三个参数用来设定upsert, multi和safe的值,upsert如果为ture,那么当update没有找到符合spec条件的记录的时候会将document插入作为新的document,multi为ture则会更新所有符合spec条件的document,safe为ture,则会调用get last error来判断是否执行成功;首先会构造UpdateCommand,然后调用db的executeCommand方法。

 

distinct(key, query, callback):

 

参数key决定根据什么来去重,query就是一个查询符合条件的document,也是调用db的executeCommand来做具体的事情。

 

count(query, callback):

计数功能,构造QueryCommand然后调用db的executeCommand做具体的事情

 

drop(callback):

调用db的dropCollection来drop一个collection

 

findAndModify(query, sort, update, options, callback):

query就是一个查询条件,起一个过滤作用,sort对查询的document排序,会选择第一个进行下面的事情,update决定了要修改成什么样子,options主要就是设定remove(Modify起到删除作用), new(返回修改后的document)和upsert(不存在则插入新的记录)选项;也是构造一个QueryCommand然后调用db的executeCommand方法。

 

find:

 

参数不固定,但是大概有三类,一个是选择条件selector,二是一个选项,比如limit, sort, fields, skip等等,三则是callback函数;如果有selector则一定作为第一个,如果有callback则一定作为最后一个,中间的那些就是options了;主要就是构造了一个Cursor然后返回给callback等待调用它的方法取下面的数据。

 

findOne(queryObject, options, callback):

构造QueryCommand然后调用db的executeCommand

 

createIndex(fieldOrSpec, options, callback):

调用ensureIndex

 

ensureIndex(fieldOrSpec, options, callback):

调用db的ensureIndex方法

 

 

dropIndex(indexName, callback):

调用db的dropIndex方法

 

dropIndexes(callback):

调用db的dropIndex方法,第二个参数是*

 

 

mapReduce(map, reduce, options, callback):

group(keys, condition, initial, reduce, command, callback)

后面再单独介绍

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值