我正在使用mongoDB和我的JSON(表名是"学生")看起来像
student.find({}).populate('subjects').then(function(studentData){console.log(studentData)})
这里"科目"是一些其他表和与学生相关联,我能够通过使用查询查询获取数据,
[{
name : "John",
subjects:["English", "Maths"]
},
{
name : "Winsel",
subjects : ["Maths"]
}]
通过使用此查询,我可以将数据作为
if(studentData.subjects.length < 2){
delete studentData.subjects
}
之后我需要删除字段&#34; subject&#34;长度小于2,我正在使用
[{
name : "John",
subjects:["English", "Maths"]
},
{
name : "Winsel"
}]
但它没有删除该字段,当我不使用if条件时,它显示相同的结果。 我期望的JSON是
$(window).scroll(function() {
sessionStorage.scrollTop = $(this).scrollTop();
});
$(document).ready(function() {
if (sessionStorage.scrollTop != "undefined") {
$(window).scrollTop(sessionStorage.scrollTop);
}
});
任何人都可以指导我,提前致谢
答案 0 :(得分:2)
要删除json响应中的字段,可以在查询函数的回调函数中使用delete。
student.find({}).populate('subjects').then(function(studentData){
var newData = studentData;
newData.map(item => {
if(item.subjects.length < 2) {
delete item.subjects;
}
return item;
})
// you can use the newData here;
})
答案 1 :(得分:1)
试试这个
var studentsList = [{
name : "John",
subjects:["English", "Maths"]
},
{
name : "Winsel",
subjects : ["Maths"]
}];
var newStudentList = _.map(studentsList , function(eachStudentData){
if(eachStudentData.subjects <2){
return _.pick(eachStudentData, 'name');
} else {
return eachStudentData;
}
});
您可以使用新成立的学生列表newStudentList作为您的代码
答案 2 :(得分:0)
这对我有用。我不知道你是否正在使用JSON对象,你需要将它转换为javascript对象(students.toObject())。
var students = studentsJSON.toObject();
var newStudents = students.map(studentData => {
if(studentData.subjects.length < 2) {
delete studentData.subjects;
}
return studentData;
});
答案 3 :(得分:0)
试试这段代码
var data = [{
name: "John",
subjects: ["English", "Maths"]
},
{
name: "Winsel",
subjects: ["Maths"]
}
];
console.log(data);
for (var i = 0; i < data.length; i++) {
if (data[i].subjects.length < 2) {
delete data[i].subjects;
}
}
console.log(data);
&#13;
答案 4 :(得分:0)
我不知道你想在这里实现什么,但是在应用程序级别上填充了作品。您可以使用$ project(或类似的$ addFields)和$ lookup
直接使用聚合管道db.students.aggregate(
[
{
$addFields: {
subjects:{
$cond:[{$gte:[{$size:"$subjects"},2]},"$subjects",null]
}
}
},
{
$lookup: {
"from" : "subjects",
"localField" : "subjects",
"foreignField" : "name",
"as" : "subjects"
}
},
]
);
来自mongodb 3.6的你可以在addFields阶段使用“$$ REMOVE”而不是null 并且在$ lookup之后你可以再次使用$ project删除空数组