查询MongoDB中的精确匹配

时间:2015-12-12 03:56:59

标签: mongodb database nosql

我正在开发一个Web应用程序功能,该功能根据数据库中以前的订单为用户建议价格。我正在使用MongoDB NoSQL数据库。在开始之前,我正在尝试找出设置订单对象以返回正确结果的最佳方法。

当用户下达如下命令时:1 cheeseburger + 1 fryMcDonalds12345 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,但它似乎并不是我想要的。

1 个答案:

答案 0 :(得分:1)

所以我相信我们已经解决了这个问题。解决方案是创建一个对服务器端的订单唯一的字符串。例如,我们将编写一个将1 cheeseburger + 2 fries转换为burger1fries2的函数。为了保持数据库的一致性,我们将首先按字母顺序对条目进行排序,因此我们将始终按照我们对查询的意图进行排序。类似的2 fries + 1 cheeseburger顺序也会生成字符串burger1fries2