MongoDB——聚合管道之$project操作
Posted 小志的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB——聚合管道之$project操作相关的知识,希望对你有一定的参考价值。
目录
一、数据准备
-
准备数据集,执行脚本
var tags = ["nosql","mongodb","document","developer","popular"]; var types = ["technology","sociality","travel","novel","literature"]; var books=[]; for(var i=0;i<50;i++) var typeIdx = Math.floor(Math.random()*types.length); var tagIdx = Math.floor(Math.random()*tags.length); var tagIdx2 = Math.floor(Math.random()*tags.length); var favCount = Math.floor(Math.random()*100); var username = "xx00"+Math.floor(Math.random()*10); var age = 20 + Math.floor(Math.random()*15); var book = title: "book-"+i, type: types[typeIdx], tag: [tags[tagIdx],tags[tagIdx2]], favCount: favCount, author: name:username,age:age ; books.push(book) db.books1.insertMany(books);
二、聚合管道之$project操作示例
2.1、查询集合中的数据
-
查询books1集合中的数据
> db.books1.find()
-
查询books1集合中的数据,格式化显示数据
> db.books1.find().pretty()
2.2、$project 可以表示投影操作, 将原始字段投影成指定名称
-
将books1集合中的 title 投影成 name
db.books1.aggregate([$project:name:"$title"])
2.3、$project 可以灵活控制输出文档的格式,也可以剔除不需要的字段
-
title字段替换name,并且只显示type和author字段。(0表示不显示此字段,1表示显示此字段)
//_id:0表示不显示id字段;type:1表示显示type字段;author:1表示显示author字段 db.books1.aggregate([$project:name:"$title",_id:0,type:1,author:1])
2.4、$project 可以从嵌套文档中排除字段
-
只显示author嵌套文档中的name字段
db.books1.aggregate([ $project:name:"$title",_id:0,type:1,"author.name":1 ])
以上是关于MongoDB——聚合管道之$project操作的主要内容,如果未能解决你的问题,请参考以下文章