前言:
从3.4版本之后MongoDB开始支持read-only 视图,基表可以是已存在的集合,也可以是其他view
操作:
创建View
db.createView(<view>, <source>, <pipeline>, <collation>)
或
db.runCommand( { create: <view>, viewOn: <source>, pipeline: <pipeline>, collation: <collation> } )
参数说明:
view:视图名称
source: 基表的集合名或视图名,须同一database下;
pipeline:数组格式,包含aggregate中的可用管道符,相当于是筛选条件配置;
collation:(可选)一些语言指定规则;
例:
>db.v_t1.find({})
{
"_id" : 5,
"age" : 22
}
视图也可以基于两个集合创建
例:
db.createView (
"orderDetails",
"orders",
[
{ $lookup: { from: "inventory", localField: "item", foreignField: "sku", as: "inventory_docs" } },
{ $project: { "inventory_docs._id": 0, "inventory_docs.sku": 0 } }
]
)
视图支持的读操作:
注意事项:
- 视图可以使用底层表的索引
- 无法直接在视图上创建,删除,重建索引
- 不能够使用$natural进行sort排序
- 不能rename视图