[
{
"_id": "59009087f8ed4e2ecc91fcbe",
"password": "test",
"email": "",
"username": "root",
"__v": 3,
"stats": [
{
"_id": "590090a0f8ed4e2ecc91fcbf",
"time": 98,
"scramble": "U2 F R U' R B' L' U L' B2 R2 B F' U2 R' B2 R2 D R2 U",
"type": "three",
"status": 0,
"date": "2017-04-26T12:20:48.622Z"
},
{
"_id": "590090adf8ed4e2ecc91fcc0",
"time": 120,
"scramble": "R2 U2 D' U' B D B L' U2 R2 F2 L2 R' F2 U F2 L2 D L2",
"type": "three",
"status": 0,
"date": "2017-04-26T12:21:01.318Z"
},
{
"_id": "590090da8f0e120320f36945",
"time": 191,
"scramble": "F2 B' L F R B' F B' D' F2 R2 B U' D' F U D B' F' D",
"type": "four",
"status": 0,
"date": "2017-04-26T12:21:46.679Z"
}
],
"accountDate": "2017-04-26T12:20:23.085Z"
}
]
我有一组用户。其中一个用户显示在上面的代码中。我想通过其id选择一个用户。然后从FROMED SELECTED我想要stats数组中的对象,类型为:“three”。我已经找了很长时间,但还没有找到解决方案。我目前使用的方法是:
User.findOne({
_id: id
}, function (err, user) {
if(err){
console.log(err);
} else {
user.stats.forEach(function (time, i, array) {
if(time.type != req.body.type){
array.splice(i, 1);
}
});
res.send(user.stats);
}
});
问题是stats数组会变得太大而且进程会很慢。
答案 0 :(得分:0)
如果你找不到从查询中的stats数组中选择的方法,我会说至少不要使用splice
来过滤掉错误类型的统计数据。尝试使用过滤器,或将“三个”类型的统计信息推入新阵列,以查看性能是否有所提高。