查询 MongoDB 中的精确匹配

Query Exact Matches in MongoDB

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

当用户下达如下订单时:1 cheeseburger + 1 fryMcDonalds12345 E. Street, MyTown, USA...它应该只有 return 个完全匹配的对象数据库。

例如,我不想收到包含 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 中设置文档的有效且高效的方法吗?还是我应该使用多个文档?

如果这是有效的,我如何才能查询到 return 个确切的订单?我调查了 $eq,但它似乎并不是我要找的东西。

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