我正在开发一个Web应用程序功能,该功能根据数据库中以前的订单为用户建议价格。我正在使用MongoDB NoSQL数据库。在开始之前,我正在尝试找出设置订单对象以返回正确结果的最佳方法。
当用户下达如下命令时:1 cheeseburger + 1 fry
,McDonalds
,12345 E. Street, MyTown, USA
...它应该只返回数据库中与EXACT匹配的对象。
例如,我不希望收到包含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
,但它似乎并不是我想要的。
答案 0 :(得分:1)
所以我相信我们已经解决了这个问题。解决方案是创建一个对服务器端的订单唯一的字符串。例如,我们将编写一个将1 cheeseburger + 2 fries
转换为burger1fries2
的函数。为了保持数据库的一致性,我们将首先按字母顺序对条目进行排序,因此我们将始终按照我们对查询的意图进行排序。类似的2 fries + 1 cheeseburger
顺序也会生成字符串burger1fries2
。