如何将javascript数组转换为Mongodb Shell语法?

如何将javascript数组转换为Mongodb Shell语法?,mongodb,aggregation-framework,Mongodb,Aggregation Framework,在我们的团队中,我们正在构建一个API,在这里我们使用Mongodb聚合管道来响应。我们相当动态地构建这些管道,这取决于传入的过滤器。这使得使用例如MongoDB Compass进行调试有点困难。因此,我的想法是在Compass中调试聚合管道,但导入管道需要管道采用“MongoDB Shell语法” 我可以将javascript数组(包含聚合管道)转换为“MongoDB Shell语法”格式的字符串吗 我尝试使用JSON.stringify,但显然不起作用。如果我可以将数组作为MongoDB S

在我们的团队中,我们正在构建一个API,在这里我们使用Mongodb聚合管道来响应。我们相当动态地构建这些管道,这取决于传入的过滤器。这使得使用例如MongoDB Compass进行调试有点困难。因此,我的想法是在Compass中调试聚合管道,但导入管道需要管道采用“MongoDB Shell语法”

我可以将javascript数组(包含聚合管道)转换为“MongoDB Shell语法”格式的字符串吗

我尝试使用JSON.stringify,但显然不起作用。如果我可以将数组作为MongoDB Shell语法,我可以将其粘贴到这里:

并逐步调试管道:)

示例管道可以是:

函数构建管道(groupId:string,factoriesToFilter?:string[]{
常量管道=[
{
$match:{
…(factorestofilter&{
_身份证:{
$in:factoriesToFilter.map((v)=>newobjectid(v)),
},
}),
groupId,
…(!factorestofilter&&{
状态:“活动”,
}),
},
}
];
}
使用
buildPipeline('abc')调用时的预期输出


事实证明,解决方案只是JSON.stringify,毕竟..

我的问题的解决方案是JSON.stringify管道对象

这不起作用的唯一原因是,我通过GrahpQL返回了JSON.stringify的结果,这里每个
字符都被转义

通过
replace(/\\/g'),
运行字符串解决了这个问题,管道可以导入MongoDB Compass

更新 我的最终解决方案如下所示:

const jsonstringfied=JSON.stringify(parent.pipeline);
const pipelineReadyToImportInCompas=jsonString.replace(/“/g,```);

我的问题的解决方案是JSON.stringify管道对象

这不起作用的唯一原因是,我通过GrahpQL返回了JSON.stringify的结果,这里每个
字符都被转义

通过
replace(/\\/g'),
运行字符串解决了这个问题,管道可以导入MongoDB Compass

更新 我的最终解决方案如下所示:

const jsonstringfied=JSON.stringify(parent.pipeline);
const pipelineReadyToImportInCompas=jsonString.replace(/“/g,```);

您有示例管道吗?@WernfriedDomscheit我用示例“转换”更新了答案您如何执行管道?
someCollection.aggregate(管道)
您有示例管道吗?@WernfriedDomscheit我用示例“转换”更新了答案如何执行管道?
someCollection.aggregate(管道)
Ok,事实上,当你说工具生成了一个聚合管道,可以执行,但不能复制/粘贴到MongoDB CompassOk中时,我很惊讶,事实上,当您说该工具生成了一个聚合管道时,我非常惊讶,它可以执行,但不能复制/粘贴到MongoDB Compass中
[
{
  $match: {
    groupId: 'abc',
    status: 'active'
  }
}  
]