【发布时间】:2016-02-25 12:15:23
【问题描述】:
我有 3 个不同的集合 Recipe、Category 和 Cuisines。
他们之间的关系
每个Recipe(n) (n) Category 每个菜谱可以有很多 Category 每个类别也可以有很多菜谱。
每个Recipe (n) (n) Cuisines 每个菜谱可以有很多菜谱,每个菜谱也可以有很多菜谱。
Recipe集合模型示例披萨、汉堡
Category集合模型示例午餐、晚餐
Cuisines 集合模型示例意大利语、墨西哥语
现在我只想找到那些Recipe 的name 是披萨和
谁的集合name是lunch和
另外,应该只属于美食名称Italian 或Mexican。
考虑到性能不应受到影响,执行过滤器查询的最佳方法是什么?
我不能使用非规范化,也不能在同一个 recipe 文档中包含 category 和 cuisines,因为每个美食和类别类型都必须是唯一的,而且每个都有 many to many 与 Recipe 的关系,因此为此非规范化条件不太适合这里。
我正在为 Mongo 使用 loopback-datasource-juggler orm
这会创建一个单独的表来处理many to many relationship 结构。
Recipe
{
RECIPE_ID,
RECIPE_NAME,
....
....
}
Category
{
CATEGORY_ID,
CATEGORY_NAME
}
//连接Recipe和Category模型
RecipeCategory
{
RECIPE_ID
CATEGORY_ID
}
Cuisines
{
CUISINES_ID,
CUISINES_NAME
}
//连接Recipe和Cuisines模型
RecipeCuisines
{
RECIPE_ID
CUISINES_ID
}
在 many to many 关系的情况下,node.js 的 loopback-datasource-juggler 是如何创建模型的。
现在我应该如何执行过滤查询,只查找那些Recipe 的name 是披萨,其集合name 是lunch 并且应该只属于美食名称@987654361 @ 或 Mexican 使用 mongoDb?
【问题讨论】:
标签: node.js mongodb mongodb-query loopbackjs strongloop