[英]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.