MongoDB中的关系查询

时间:2014-10-30 11:35:54

标签: mongodb mongodb-query nosql

刚开始使用MongoDB。我有一些名为用户,餐馆,餐馆和评级的馆藏。我需要将评级映射到特定的菜肴和用户。

Users
{
 _id: "12323421",
 name: "John Doe",
 ...
}

Dishes
{
 _id: "9872983749",
 name: "Apple Pie",
 restaurantID: "3432452" //Corresponds to Patisserie
 ...
}

Restaurants
{
 _id: "3432452",
 name: "Patisserie",
 ...
}

Ratings
{
 _id: "74766575",
 userID: "12323421", //Corresponds to John Doe
 dishID: "9872983749", //Corresponds to Apple Pie
 rating: 5
}

我不知道如何生成一些查询,如:

  • 至少有10个评级的菜单列表,或
  • 餐厅的菜肴 已收到10个评分

这在SQL环境中实现非常简单,但是如何在MongoDB中使用Joins或嵌套查询?

1 个答案:

答案 0 :(得分:2)

MongoDB本身不支持连接或子查询。

我建议您退一步,对MongoDB架构设计进行一些阅读。 MongoDB文档的Data Modeling Concepts部分是一个很好的起点。关于该主题还有许多其他资源。 O'Reilly的书 MongoDB应用设计模式 也是一个很好的资源。

如果您以类似于在RDBMS中对其进行建模的方式向前推进MongoDB中的数据建模,那么您就是在为失败做好准备。

对于特定问题的建模并不总是有明确的“正确”或“最佳”方式。它将始终取决于您的应用程序的特定访问模式和要求。

正如您在评论中提到的,一种方法是将特定菜肴的评级嵌入Dish系列。但如果你有大量的评级(无限增长是坏的),这是有问题的。这里常见的方法通常是混合方法。例如,您可以嵌入特定菜肴的最受欢迎或最新评级,并将其他评级存储在单独的集合中。再次,考虑一下您的应用程序将如何呈现数据并尝试相应地建模您的数据。