将 Group Accumulator Operator $first 应用于系统变量 $$ROOT 以返回对根文档的引用?
累加器是将它们的状态保持为文档在管道中进行过程中的一种运算符。
$ROOT 指向根文档,即在聚合管道阶段中当前正在处理的顶级文档。
让我们使用文档创建一个集合 −
> db.demo582.insertOne({FirstName:"Chris",Age:21,createDate:new ISODate("2020-01-10")});{
"acknowledged" : true, "insertedId" : ObjectId("5e91ce41fd2d90c177b5bcbd")
}
> db.demo582.insertOne({FirstName:"Chris",Age:21,createDate:new ISODate("2020-04-21")});{
"acknowledged" : true, "insertedId" : ObjectId("5e91ce4ffd2d90c177b5bcbe")
}
> db.demo582.insertOne({FirstName:"Chris",Age:22,createDate:new ISODate("2020-02-11")});{
"acknowledged" : true, "insertedId" : ObjectId("5e91ce59fd2d90c177b5bcbf")
}
> db.demo582.insertOne({FirstName:"Chris",Age:22,createDate:new ISODate("2020-01-12")});{
"acknowledged" : true, "insertedId" : ObjectId("5e91ce6efd2d90c177b5bcc0")
}在集合中使用 find() 方法显示所有文档 −
> db.demo582.find();
这将产生以下输出 −
{ "_id" : ObjectId("5e91ce41fd2d90c177b5bcbd"), "FirstName" : "Chris", "Age" : 21, "createDate" : ISODate("2020-01-10T00:00:00Z") }
{ "_id" : ObjectId("5e91ce4ffd2d90c177b5bcbe"), "FirstName" : "Chris", "Age" : 21, "createDate" : ISODate("2020-04-21T00:00:00Z") }
{ "_id" : ObjectId("5e91ce59fd2d90c177b5bcbf"), "FirstName" : "Chris", "Age" : 22, "createDate" : ISODate("2020-02-11T00:00:00Z") }
{ "_id" : ObjectId("5e91ce6efd2d90c177b5bcc0"), "FirstName" : "Chris", "Age" : 22, "createDate" : ISODate("2020-01-12T00:00:00Z") }以下是应用 Group Accumulator 运算符的查询 −
> db.demo582.aggregate([
... {
... "$group": {
... "_id": "$FirstName",
... "MaximumDate": {
... "$max": "$createDate"
... },
... "count": {
... "$sum": 1
... },
... "details": {
... "$first": "$$ROOT"
... }
... }
... },
... {
... "$project": {
... "MaximumDate": 1,
... "count": 1,
... "details": {
... "_id": "$_id",
... "FirstName": "$details.FirstName",
... "Age" : "$details.Age",
... }
... }
... }
... ])这将产生以下输出 −
{ "_id" : "Chris", "MaximumDate" : ISODate("2020-04-21T00:00:00Z"), "count" : 4, "details" :
{ "_id" : "Chris", "FirstName" : "Chris", "Age" : 21 }
}
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP