Javascript 使用Mongoose查找特定的对象数组,只需获取其中的所有对象即可
想象一下,我有这个收藏:Javascript 使用Mongoose查找特定的对象数组,只需获取其中的所有对象即可,javascript,mongodb,mongoose,Javascript,Mongodb,Mongoose,想象一下,我有这个收藏: { "_id": "2020 Standings", "DriversChampionship": [ { "_id": "5fd3966d2769dc12dc010475", "driverName": "Lewis Hamilton", "driverTeam&quo
{
"_id": "2020 Standings",
"DriversChampionship": [
{
"_id": "5fd3966d2769dc12dc010475",
"driverName": "Lewis Hamilton",
"driverTeam": "Mercedes AMG",
"driverPts": "230"
},
{
"_id": "5fd3966d2769dc12dc010476",
"driverName": "Sebastian Vettel",
"driverTeam": "Ferrari",
"driverPts": "161"
}
],
"ConstructorsChampionship": [
{
"_id": "5fd3966d2769dc12dc010489",
"teamName": "Mercedes AMG",
"teamPts": "230"
},
{
"_id": "5fd3966d2769dc12dc01048a",
"teamName": "Ferrari",
"teamPts": "161"
}
]
}
在Routes文件夹中,我得到了这个GET请求
router.route("api/standings/:arrayName")
.get(getStandingsArray);
那么,我如何使用Mongoose查找,然后发送res.json,其中只包含与:arrayName匹配的数组?
让我用一个例子更好地解释一下:
var query = modelName.find({}).select('DriversChampionship -_id');
我键入以下路线http://localhost:4000/api/standings/DriversChampionship
然后,在我的控制器中,我请求使用以下命令获得:arrayName
const arrayName = req.params.arrayName
// arrayName = DriversChampionship
为了以后使用modelName.find()
打印这个特定的对象数组
"DriversChampionship": [
{
"_id": "5fd3966d2769dc12dc010475",
"driverName": "Lewis Hamilton",
"driverTeam": "Mercedes AMG",
"driverPts": "230"
},
{
"_id": "5fd3966d2769dc12dc010476",
"driverName": "Sebastian Vettel",
"driverTeam": "Ferrari",
"driverPts": "161"
}
]
我想弄明白,但我真的不知道如何告诉猫鼬
有什么想法吗
如果你不明白我的任何解释,请告诉我
谢谢 通过使用select,您可以获得所需的字段(在您的示例中为“DriversChamposion”),下面是一个示例:
var query = modelName.find({}).select('DriversChampionship -_id');
要使其动态化,请执行以下操作:
const arrayName = req.params.arrayName
var query = modelName.find({}).select(`${arrayName} -_id`);
谢谢,成功了!我可以问一下为什么在数组名后面使用-\u id吗?因为除非我们排除它,否则\u id字段总是存在的