我正在开发一个Web应用程序功能,该功能根据数据库中的先前订单为用户建议价格。我正在使用MongoDB NoSQL数据库。在开始之前,我试图找出设置订单对象以返回正确结果的最佳方法。
当用户下订单,如以下情况:1 cheeseburger + 1 fry
,McDonalds
,12345 E. Street, MyTown, USA
...它应该只返回从数据库中精确匹配的对象。
例如,我不想收到包含的订单1 cheeseburger + 1 fry + 1 shake
。我将保持该确切订单的平均价格和计数。
{
restaurantAddress: "12345 E. Street, MyTown, USA",
restaurantName: "McDonald's",
orders: {
{ cheeseburger: 1, fries: 2 }
: {
sumPaid: 1444.55,
numTimesOrdered: 167,
avgPaid: 8.65 (gets recomputed w/ each new order)
},
{ // repeat for each unique item config },
{ // another unique item (or items) }
}
您是否认为这是在MongoDB中设置文档的有效方法?还是应该使用多个文档?
如果这是有效的,我如何查询它只返回确切的订单?我调查了一下,$eq
但似乎并不是我要找的东西。
因此,我相信我们已经解决了问题。解决方案是创建一个对于服务器端订单唯一的字符串。例如,我们将编写一个将转换1 cheeseburger + 2 fries
为的函数burger1fries2
。为了保持数据库的一致性,我们将首先按字母顺序对条目进行排序,因此我们将始终达到查询的预期目的。类似的顺序2 fries + 1 cheeseburger
也会生成字符串burger1fries2
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句