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 时。
我正在尝试根据 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 时。