MongoDB 存储过程等效

问题描述 投票:0回答:4

我有一个包含商店列表的大型 CSV 文件,其中一个字段是邮政编码。 我有一个名为 ZipCodes 的独立 MongoDB 数据库,它存储任何给定邮政编码的纬度和经度。

在 SQL Server 中,我将执行一个名为 InsertStore 的存储过程,它将查找 ZipCodes 表以获取相应的纬度和经度,并将数据插入到 Stores 表中。

MongoDB 中是否有类似存储过程概念的东西? 基本上,对于每个插入,我需要查找该商店的纬度和经度并保存它。

我不太熟悉 Map/Reduce 的概念,但这与这里相关吗? 谢谢!

stored-procedures mongodb geolocation mapreduce
4个回答
110
投票

与 mongodb 中的存储过程最接近的东西是存储 JavaScript。 Mike Dirolf 博客上的本文提供了有关存储 javascript 的精彩介绍。


24
投票

注意,根据参考

不要将应用程序逻辑存储在数据库中。有表现 在 MongoDB 内运行 JavaScript 的限制。应用代码 当与以下人员共享版本控制时通常也是最有效的 应用程序本身。

因此 mongodb 中没有任何等效的存储过程。


1
投票

您可以通过 MongoDB Stitch 在云上使用触发器和函数。


0
投票

MongoDB 通过其聚合管道或 MongoDB Atlas 函数为传统 SQL Server 存储过程提供了“强大的替代方案”。 MongoDB 鼓励使用聚合管道而不是存储过程,这为数据转换和操作提供了灵活性。 在基于 ZipCodes 将纬度和经度插入 Stores 集合的场景中,您可以利用聚合管道来实现此目的。这是一个简化的方法:

    将 CSV 数据加载到 MongoDB 中或根据需要检索它。
  • 创建一个聚合管道,对 ZipCodes 集合执行查找,以根据 ZipCodes 获取纬度和经度数据。
  • 利用聚合管道中的
  • $merge

    阶段将结果与 Stores 集合合并或将它们插入到新集合中。

    
    

  • 这种方法允许您在 MongoDB 中高效处理数据转换和插入,提供与 SQL Server 中传统存储过程类似的功能。

如果您需要有关将基于 SQL 的存储过程迁移到 MongoDB 聚合管道的更详细指导,可以参考以下技术指南:

https://www.mongodb.com/collateral/technical-guide-migration-stored-procedures-to-mongodb

© www.soinside.com 2019 - 2024. All rights reserved.