刚开始使用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
}
我不知道如何生成一些查询,如:
这在SQL环境中实现非常简单,但是如何在MongoDB中使用Joins或嵌套查询?
答案 0 :(得分:2)
MongoDB本身不支持连接或子查询。
我建议您退一步,对MongoDB架构设计进行一些阅读。 MongoDB文档的Data Modeling Concepts部分是一个很好的起点。关于该主题还有许多其他资源。 O'Reilly的书 MongoDB应用设计模式 也是一个很好的资源。
如果您以类似于在RDBMS中对其进行建模的方式向前推进MongoDB中的数据建模,那么您就是在为失败做好准备。
对于特定问题的建模并不总是有明确的“正确”或“最佳”方式。它将始终取决于您的应用程序的特定访问模式和要求。
正如您在评论中提到的,一种方法是将特定菜肴的评级嵌入Dish系列。但如果你有大量的评级(无限增长是坏的),这是有问题的。这里常见的方法通常是混合方法。例如,您可以嵌入特定菜肴的最受欢迎或最新评级,并将其他评级存储在单独的集合中。再次,考虑一下您的应用程序将如何呈现数据并尝试相应地建模您的数据。