postman 如何在API“POST”中使用聚合函数时传递allowList Use = true

v7pvogib  于 7个月前  发布在  Postman
关注(0)|答案(1)|浏览(69)

我正在尝试使用post方法进行聚合调用。我的body(json)看起来像这样:

{
   "aggregate":[
      {
         "$group":{
            "_id":{
               "mac_address":"$mac",
               "address":"$ip"
            },
            "hostnames":{
               "$addToSet":"$hostname"
            },
            "interfaces":{
               "$addToSet":"$interfaceName"
            }
         }
      },
      {
         "$project":{
            "_id":0,
            "mac_address":"$_id.mac_address",
            "address":"$_id.address",
            "hostnames":"$hostnames",
            "interfaces":"$interfaces"
         }
      }
   ]
}

字符串
由于源数据有大量的文档(在lakhs)处理,我得到了下面的错误:命令失败错误16945(Location 16945):'超过内存限制$组,但不允许外部排序.传递allowable使用:true选择.'在服务器上.
我知道如何在Mongo-DB工具(如Robo 3 t)中传递allowable Use属性,但无法在postman中执行相同操作。需要帮助!

tzdcorbm

tzdcorbm1#

我的答案取决于用例。它的工作原理是假设你必须导出数据,而不是应用程序代码。这应该在没有allowDiskUse属性的情况下也能工作。
1.运行第一个聚合,将可能的组合导出到临时集合。

db.<name>.aggregate([
{$match: {...}},
{$group: {...}},
{$project: {...}},
{$out: "temp_collection_1"}
])

字符串
1.在临时集合上运行第二个聚合,并执行其他操作,如查找,排序等,并输出到另一个临时集合

db.temp_collection_1.aggregate([
{$match: {}},
{$lookup: {...}},
{$sort: {...}},
{$out: "temp_collection_2"}
])


1.使用mongoexport转储整个temp_collection_2集合
1.删除临时集合

相关问题