[英]Querying a Nested Document using an array - MongoDB
我有這樣的文件
{
"_id" : ObjectId("61e10561a06dd136bc848b1f"),
"packagingCharges" : {
"small" : 0,
"medium" : 0,
"large" : 0
},
"themeColor" : "#168EBA",
"openingTime" : "9 am",
"closingTime" : "9 pm",
"discount" : "0",
"isRestaurantActive" : true,
"restaurantName" : "Aman Restaurant",
"address" : "Faridabad",
"createdBy" : ObjectId("61dd2182871d7c2be8b41006"),
"restaurantTokenImage" : "..\\tmp\\uploads\\RestaurantImages\\1642136929834_999192.jpg",
"restaurantLogoImage" : "..\\tmp\\uploads\\RestaurantImages\\1642136929928_doreMON.JPG",
"coins" : 0,
"isGstRegistered" : true,
"offers" : [
{
"isAvailable" : true,
"_id" : ObjectId("61e105ed202546421025c221"),
"giftItem" : "Pizza",
"coins" : 10,
"menuId" : ObjectId("61e105ed202546421025c220")
}
],
"menu" : [
{
"menuItem" : "chapati",
"price" : 5,
"menuItemImageName" : "979696859_054.jpg",
"menuItemImage" : "..\\tmp\\uploads\\menuItemImages\\1642136982717_979696859_054.jpg",
"isGift" : false,
"isAvailable" : true,
"excludeMe" : true,
"_id" : ObjectId("61e10596a06dd136bc848b20"),
"coins" : 1
},
{
"menuItem" : "Pizza",
"price" : 50,
"menuItemImageName" : "979696859_054.jpg",
"menuItemImage" : "..\\tmp\\uploads\\menuItemImages\\1642137069230_979696859_054.jpg",
"isGift" : true,
"isAvailable" : true,
"excludeMe" : true,
"_id" : ObjectId("61e105ed202546421025c220"),
"coins" : 10
},
{
"menuItem" : "Pasta",
"price" : 80,
"menuItemImageName" : "979696859_054.jpg",
"menuItemImage" : "..\\tmp\\uploads\\menuItemImages\\1642137188767_979696859_054.jpg",
"isGift" : false,
"isAvailable" : true,
"excludeMe" : true,
"_id" : ObjectId("61e10664202546421025c222"),
"coins" : 10
}
],
"createdAt" : ISODate("2022-01-14T05:08:50.032Z"),
"updatedAt" : ISODate("2022-01-14T05:13:08.879Z"),
"__v" : 0
}
我想在數組 [ObjectId("61e10596a06dd136bc848b20"), ObjectId("61e105ed202546421025c220")] 的幫助下找出菜單,我不想要字段的 rest。 我能寫的最好的查詢是什么。 我使用 mongo 作為數據庫,使用 javascript 或 Node 作為后端
$match
查找document
$project
只保留menu
$unwind
單獨的menu
數組$match
查找 id _in
數組db.collection.aggregate([
{
"$match": {
"menu._id": {
"$in": [
ObjectId("61e10596a06dd136bc848b20"),
ObjectId("61e105ed202546421025c220")
]
}
}
},
{
"$project": {
"menu": 1
}
},
{
"$unwind": "$menu"
},
{
"$match": {
"menu._id": {
"$in": [
ObjectId("61e10596a06dd136bc848b20"),
ObjectId("61e105ed202546421025c220")
]
}
}
}
])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.