MongoDB聚合结果输出到新的集合方法与案例实践

Posted 肖永威

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB聚合结果输出到新的集合方法与案例实践相关的知识,希望对你有一定的参考价值。

$out (aggregation)
获取聚合管道返回的文档并将其写入指定集合。从MongoDB 4.4开始,可以指定输出数据库。

  • $out阶段必须是管道中的最后一个阶段。
  • $out运算符允许聚合框架返回任意大小的结果集。

语法:

 $out:  db: "<output-db>", coll: "<output-collection>"  
  • db:输出数据库名称。
    对于复本集或单机版,如果输出数据库不存在,$out则创建数据库。对于分片群集,指定的输出数据库必须已经存在。

  • coll:输出集合名称

例如:


db.getCollection('customerfeature').aggregate([
    '$match':'yearmonth':'$gte':'202101','$lte':'202112',
    '$sort':'carduser_id':1,'yearmonth':1,
    '$group':'_id':'$carduser_id','data':'$last':'$$ROOT',
    '$project':'carduser_id':'$data.carduser_id','yearmonth':'$data.yearmonth','lateststatus':'$data.lateststatus',
    '$out':'db':'ccm','coll':'laststatus'
    ],
    'allowDiskUse':true)


另外,$out可以使用字符串仅指定输出集合(即输出到同一数据库中的集合)。
$out: "<output-collection>" // Output collection is in the same database

db.getCollection('customerfeature').aggregate([
    '$match':'yearmonth':'$gte':'202101','$lte':'202112',
    '$sort':'carduser_id':1,'yearmonth':1,
    '$group':'_id':'$carduser_id','data':'$last':'$$ROOT',
    '$project':'carduser_id':'$data.carduser_id','yearmonth':'$data.yearmonth','lateststatus':'$data.lateststatus',
    '$out':'laststatus00'
    ],
    'allowDiskUse':true)

参考:
https://docs.mongodb.com/upcoming/reference/operator/aggregation/out/

以上是关于MongoDB聚合结果输出到新的集合方法与案例实践的主要内容,如果未能解决你的问题,请参考以下文章

mongoDB表与表的关系及聚合管道查询

MongoDB高级查询多级分组聚合及时间计算应用实践案例

MongoDB,分组,聚合

Spark RDD 到新的 MongoDB 集合,在 Scala 中具有索引

mongodb 分组聚合查询

mongodb聚合命令