gpt4 book ai didi

node.js - 如何在对象中获取一些字段?

转载 作者:可可西里 更新时间:2023-11-01 10:42:21 33 4
gpt4 key购买 nike

我有一个集合“Students”。

{
student:"Jone Doe",
class:"A",
subjects:
[
{subject:"Math",teacher:"Linda","score":"82"},
{subject:"English",teacher:"Jone","score":"52"},
{subject:"History",teacher:"Maria","score":"32"},
]
}
{
student:"Baby Doe",
class:"B",
subjects:
[
{subject:"Math",teacher:"Hilary","score":"52"},
{subject:"English",teacher:"Notham","score":"52"},
{subject:"History",teacher:"Hamet","score":"32"},
]
}

我想获得学生“数学”科目的所有分数。

我正在使用聚合来获取

db.collection('studens').aggregate([
{$match: {"subjects.subject" : "Math" } },
{$project: {
_id:0,
subjects: {
$filter: {
input: "$subjects",
as: "subject",
cond: { $lte: [ "$$subject.subject", "Math" ] }
}
}
}
}
]);

结果:

{subject:"Math",teacher:"Linda","score":"82"}
{subject:"Math",teacher:"Hilary","score":"52"}

但是它显示了所有字段,我想要结果(只显示主题和分数):

{subject:"Math","score":"82"}
{subject:"Math","score":"52"}

如何做到这一点?请帮助我。

最佳答案

我不确定应该怎么做,因为不支持排除,我会使用另一个投影来包含所需的字段。 (可能有更好的方法)。

让我们试试这个:

db.collection('studens').aggregate([
{$match: {"subjects.subject" : "Math" } },
{$project: {
_id:0,
subjects: {
$filter: {
input: '$subjects',
as: 'subjects',
cond: {$eq: ['$$subjects.subject', 'Math']}
}
}
}
},{$project: {subjects: { subject:1, score:1}}}
]);

结果:

"result" : [ 
{
"subjects" : [
{
"subject" : "Math",
"score" : "82"
}
]
},
{
"subjects" : [
{
"subject" : "Math",
"score" : "52"
}
]
}
]

这是您要找的吗?

关于node.js - 如何在对象中获取一些字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36845715/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com