MongoDB Read Operations

说些基本的 Mongo 概念:

Read 基本上就是 query 拿数据,选定 collection 然后再里面定位 documents

db.collection.find()

db.users.find( { age: { $gt: 18 } }, { name: 1, address: 1 } ).limit(5)


先说 find 返回的是个 cursor , 这个其实就是返回结果的集合,可以迭代的
projection 就是在条件上投影出想要的字段 1 代表显示, 0 代表排除。 显示和排除是不能一起用的,特例是你排除的是 ‘_id’

否则:

  • 要么你把显示的都列出来都是 1
  • 要么你把排除的列出来都是 0,然后显示剩下的

这里面 $gt 是选择器(selector) “大于”,还有其 eq exists in 等等
https://docs.mongodb.org/manual/reference/operator/query/#query-selectors

limit 是对 cursor 的修饰,也就是对 find 的结果的再次修饰

  • limits //选出前几个
  • skips //去掉前几个
  • sort //按拿个字段排序

复杂条件查询,可能还会用到 aggregation pipeline;

其实就是 pipeline, 但支持很多操作,匹配,分组,随机,还可以对特定字段数据进行处理。 这个好牛

https://docs.mongodb.org/manual/reference/operator/aggregation/#aggregation-pipeline-operator-reference


查询优化:

  • 索引
  • Query Selectivity 也就是条件要正向的,nin 这种和不用索引没啥区别了

https://docs.mongodb.org/manual/core/indexes/