Node.js 节点中mongodb中的多集合过滤器

Node.js 节点中mongodb中的多集合过滤器,node.js,mongodb,mongodb-query,loopbackjs,strongloop,Node.js,Mongodb,Mongodb Query,Loopbackjs,Strongloop,我有3个不同的收藏菜谱,类别和菜系 它们之间的关系 每个配方(n)(n)类别每个配方可以有许多类别,每个类别也可以有许多配方 每个食谱(n)(n)菜系每个食谱可以有许多菜系,每个菜系也可以有许多食谱 Recipecollection model示例比萨饼、汉堡 类别收集模型示例午餐、晚餐 美食收藏模式示例意大利、墨西哥 现在我只想找到那些Recipe的name是pizza和 其收藏名称为午餐和 此外,应仅属于美食名称意大利或墨西哥 考虑到性能不应受到影响,执行筛选查询的最佳方法是什么? 我不能使

我有3个不同的收藏
菜谱
类别
菜系

它们之间的关系

每个
配方
(n)(n)
类别
每个配方可以有许多
类别
,每个类别也可以有许多配方

每个
食谱
(n)(n)
菜系
每个食谱可以有许多菜系,每个菜系也可以有许多食谱

Recipe
collection model示例比萨饼、汉堡

类别
收集模型示例午餐、晚餐

美食
收藏模式示例意大利、墨西哥

现在我只想找到那些
Recipe
name
是pizza和

其收藏
名称
午餐

此外,应仅属于美食名称
意大利
墨西哥

考虑到性能不应受到影响,执行筛选查询的最佳方法是什么?

我不能使用非规范化,也不能将
类别
菜系
包含在同一
菜谱
文档中,因为每个菜系和类别类型必须是唯一的,而且每个都与
菜谱
多对多
关系,因此,针对这种情况的非规范化在这里并不合适

我正在为Mongo使用环回数据源处理程序orm

这将创建一个单独的表处理
多对多关系
结构

配方

{
   RECIPE_ID,
   RECIPE_NAME,
   ....
   ....
}
类别

{
  CATEGORY_ID,
  CATEGORY_NAME
}
//连接配方和类别模型

recipecegory

{
  RECIPE_ID
  CATEGORY_ID
}
{
  RECIPE_ID
  CUISINES_ID
}
菜系

{
  CUISINES_ID,
  CUISINES_NAME
}
//连接
配方
菜系
模型

RecipeCuisines

{
  RECIPE_ID
  CATEGORY_ID
}
{
  RECIPE_ID
  CUISINES_ID
}
这就是环回数据源如何在
多对多
关系的情况下为node.js的orm创建模型


现在,我应该如何执行筛选查询,只查找那些
配方
名称
是比萨饼,而其收藏
名称
午餐
,以及,应该只属于使用mongoDb的美食名称
意大利语
墨西哥

您可以使用嵌入的文档来解决此问题

配方集合(假设
类别
菜系
字段应较小)

质疑


您还可以创建适当的索引以加快查询速度。

谢谢您的回答,但正如我在问题中所说,在这种情况下,嵌入是不可能的。类别和菜系是唯一的字段,应该是不同的,并且使用第三个联接表与多对多关系相连接