读mongodb使用手册笔记

使用mongodb已经有一段时间了,入门是从mongodb 菜鸟教程入的门,工作中遇到问题就 google 或者 baidu, 但是发现这样太累了,对于知识的掌握不系统,于是计划将 mongodb 的官方手册读一遍,梳理一下自己对于 mongodb 的使用。

聚合

更新

形式

bulkWrite(operations, options, callback){Promise}

使用方法

1
2
3
4
5
6
7
8
9
10
11
12
13
{ insertOne: { document: { a: 1 } } }

{ updateOne: { filter: {a:2}, update: {$set: {a:2}}, upsert:true } }

{ updateMany: { filter: {a:2}, update: {$set: {a:2}}, upsert:true } }

{ updateMany: { filter: {}, update: {$set: {"a.$[i].x": 5}}, arrayFilters: [{ "i.x": 5 }]} }

{ deleteOne: { filter: {c:1} } }

{ deleteMany: { filter: {c:1} } }

{ replaceOne: { filter: {c:3}, replacement: {c:4}, upsert:true}}

document, filter, update, replacement 是描述语言

比如:

{ insertOne: { document: { a: 1 } } } 实际形式应为:

insertOne({a: 1})

查找

仅查找

find(query, options){Cursor}

获取数量

形式

  1. countDocuments(query, options, callback){Promise}

  2. estimatedDocumentCount(options, callback){Promise}

区别

第一个方法速度较慢,但是获取的数量很准确。第二个方法则相反。

获取某个字段的非重复值

distinct(key, query, options, callback){Promise}

key 是一个 string,不是 object

索引

创建索引

形式

  1. createIndex(fieldOrSpec, options, callback){Promise}
  2. createIndexes(indexSpecs, options, callback){Promise}

删除索引

  1. dropIndex(indexName, options, callback){Promise}
  2. dropIndexes(options, callback){Promise}
  3. dropAllIndexes(callback){Promise}

检测索引

ensureIndex(fieldOrSpec, options, callback){Promise}

判断索引是否存在,如果不存在,则新建

集合

删除集合

drop(options, callback){Promise}

参考

Node.js MongoDB Driver API