MongoDB服务器端聚合查询在多个脚本之间共享

时间:2015-06-04 13:58:54

标签: php python mongodb aggregation-framework

我们有一个MongoDB数据库,我们使用聚合框架从中提取不同来源的数据。

python脚本生成pdf报告,我们的仪表板绘制了由php后端提取的数据图。 这些脚本大多使用相同的聚合管道,但代码在python和php中复制。

我们希望使查询框架独立,也因为我们计划将后端从php移动到python,并且通常是为了避免代码复制。

我认为一个解决方案是将查询放在JS文件中,或以某种方式存储它们(在mongo上)服务器端,但我不确定这是否可行。

对于那些喜欢引用MySql的人,我们想要像MongoDB上的MySql Views。 有什么建议吗?

EDIT1:

我正在试验server-side Javascript,但它似乎不是一个选项,因为它显然只允许$where和``mapReduce```操作。加载外部Javascript也是一种选择。

1 个答案:

答案 0 :(得分:1)

我建议将聚合管道存储在JSON文件中并使用脚本加载它们。例如。在Python中:

import json

import pymongo


pipeline = json.load(open('filename.json'))
collection = pymongo.MongoClient().db.collection
for doc in collection.aggregate(pipeline):
    print(doc)