MongoDB 多个脚本共享的服务器端聚合查询
MongoDB server-side aggregate queries shared between multiple scripts
我们有一个 MongoDB 数据库,我们使用聚合框架从不同来源提取数据。
python 脚本生成 pdf 报告,我们的仪表板绘制由 php 后端提取的数据图表。
这些脚本主要使用相同的聚合管道,但代码在 python 和 php 中被复制。
我们想让查询独立于框架,也是因为我们计划将后端从 php 移动到 python,并且通常是为了避免代码复制。
我认为一种解决方案是将查询放在 JS 文件中,或者以某种方式将它们存储(在 mongo)服务器端,但我不确定这是否可行。
对于那些喜欢参考 MySql 的人,我们想要 MySql 对 MongoDB 的看法。
有什么建议吗?
编辑 1:
我正在试验 server-side Javascript 但它似乎不是一个选项,因为显然它只允许 $where
和 ``mapReduce``` 操作。加载外部 Javascript 也可能是一种选择。
我建议将聚合管道存储在 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)
我们有一个 MongoDB 数据库,我们使用聚合框架从不同来源提取数据。
python 脚本生成 pdf 报告,我们的仪表板绘制由 php 后端提取的数据图表。 这些脚本主要使用相同的聚合管道,但代码在 python 和 php 中被复制。
我们想让查询独立于框架,也是因为我们计划将后端从 php 移动到 python,并且通常是为了避免代码复制。
我认为一种解决方案是将查询放在 JS 文件中,或者以某种方式将它们存储(在 mongo)服务器端,但我不确定这是否可行。
对于那些喜欢参考 MySql 的人,我们想要 MySql 对 MongoDB 的看法。 有什么建议吗?
编辑 1:
我正在试验 server-side Javascript 但它似乎不是一个选项,因为显然它只允许 $where
和 ``mapReduce``` 操作。加载外部 Javascript 也可能是一种选择。
我建议将聚合管道存储在 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)