MongoDB 即时计算货币兑换

MongoDB calculating currency exchange on the fly

我正在尝试根据 min/max 价格从集合中获取结果,但用户可能希望以英镑搜索,而文档中有美元。

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

对象集合(一条记录):

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

货币兑换集合(一条记录,USD‹—›EUR):

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

一种选择是不。

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

而是您在保存时在产品上设置货币。是的,你首先会说的​​是:"what happens if the currency changes before the price?"

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

在其他应用程序中,价格始终由人工审查和监控。出于这个原因,我不会更频繁地执行此 cronjob。如果它们(价格)大幅波动,这可能会导致 10,000 种产品需要一次全部审查,因此它会在一周内被分解。此外,货币在一周内发生重大变化的可能性极小,几乎不可能。

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

我们最初确实用于 MySQL 的现场计算,但它变得非常慢,尤其是在加载货币表 JOIN 时。