我正在设计餐厅菜单,其中我基本上有3个类别。 我有一个条件,我的菜肴都出现在任何一个类别,但一旦添加了菜肴,我无法进一步添加更多类别。
This is my collection at the last level (3rd categories)
{
"_id": "34",
"restaurant_details_id": "R0023",
"menu": [{
"catName": "indian",
"dishList": [],
"subCatList": [{
"subCatName": "chinease",
"dishList": [],
"subCatList": [{
"subCatName": "korean",
"dishList": [{
"dishtype": "food",
"dishname": "soup"
}, {
"dishtype": "food",
"dishname": "soup"
}],
"completed": false
}],
"completed": false
}]
}]
}
因此,如果此人在第一类进入菜肴,则该收集将仅限于第一级。并且不会有任何类别。 因此,我有多个文件,其中重要的id是常见的。
现在问题是我必须找到餐厅,其餐厅ID =" R0023"和dishtype ="食物"。我可以找到我是否只有一个使用aggregate()的文档,但是当多个文档中存在数据时它是如何的。
我还必须在我的java中进一步实现它。我深受其害。
答案 0 :(得分:0)
通过嵌套看起来你的结构不必要地复杂化了。我建议你重新构建它 - 引入一个名为dishes
的新集合并存储这样的菜:
{
_id: 1,
restaurantId: "R0023",
category: "indian",
type: "food",
name: "Chicken Razala"
}
{
_id: 2,
restaurantId: "R0023",
category: "Chinese",
type: "food",
name: "Noodle Soup"
}
您将能够非常轻松地查询此结构的文档。
db.dishes.find({ restaurantId: "R0023", type: "food" })
{
"_id" : 1,
"restaurantId" : "R0023",
"category" : "indian",
"type" : "food",
"name" : "Chicken Razala"
}
{
"_id" : 2,
"restaurantId" : "R0023",
"category" : "Chinese",
"type" : "food",
"name" : "Noodle Soup"
}