【问题标题】:MongoDB calculating currency exchange on the flyMongoDB即时计算货币兑换
【发布时间】:2015-01-30 23:41:13
【问题描述】:

我正在尝试根据最低/最高价格从集合中获取结果,但用户可能希望以 GBP 进行搜索,并且文档中包含美元。

我一直在考虑从 Object 和 Exchange 定价中查询 Exchange 集合,但是 因为 mongodb 不允许我在 $where 函数中使用“db”,所以它不能像这样工作。

对象集合(一条记录):

{
  "_id": ObjectId("5473572cf1a76349020041c6"),
  [...]
  "pricing" : {
    "basic" : 9470,
    "currency" : "USD"
  }
  [...]
}

汇兑收款(一条记录,USD‹—›EUR):

{
  "_id" : "USD",
  "rate" : 11344,
  "rateReverse" : 8815
}

【问题讨论】:

    标签: mongodb doctrine-odm


    【解决方案1】:

    一个选项是不。

    我实际上在这个领域工作,最近不得不为许多欧盟国家和美国实施增值税和定价,尽管在 SQL 中,但通常仍然适用相同的规则。

    相反,您可以在保存时在产品上设置货币。是的,你会说的第一句话是:“如果货币在价格之前发生变化,会发生什么?”

    在我创建的其他此类应用程序中,我使用了每周一次的 cronjob,它实际上在一周内缓慢地检查每个产品,更新价格。

    在其他应用程序中,价格总是由人工审查和监控。正是出于这个原因,我不让这个 cronjob 更频繁。如果它们(价格)波动很大,这可能会导致 10,000 种产品需要一次全部审查,因此它会在一周内分解。此外,一周内发生重大的货币变化是极其、临界的,不太可能发生。

    为了分解货币定价产生的工作并使其更加自动化,我们认为任何高于或低于 5% 的转化都是重要的并标记价格,这意味着大多数价格在货币变化时是自动化的.

    我们最初使用 MySQL 进行现场计算,但速度真的很慢,尤其是在加载货币表 JOIN 时。

    【讨论】:

    • 我一直在考虑获取整个货币集合(约 30 个文档),并将其放入 $where 查询中,但我对这种解决方案的性能有严重怀疑,但它会给我所有我目前需要的可能性。
    • @retest a $where 会杀死你的系统,并且很可能由于输入不卫生而引发安全威胁
    • 感谢您的回复,我从错误的方向走到了这一点:)。通过将 $ 或计算出的每种重要货币的最高价格值来解决
    猜你喜欢
    • 2012-06-10
    • 2016-06-19
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 2015-10-31
    相关资源
    最近更新 更多