【发布时间】:2020-09-16 14:00:08
【问题描述】:
我正在尝试为我的应用创建一个循环脚本,用于检查用户数组是否已满,如果没有,则放入用户 ID。
我的 JSON 文件基于 MongoDB,它有 24 个条目(小时)。每个条目都有一个mins 数组(见下文)
我尝试了以下脚本,但它应该以原始形式检查每个数组,而不考虑 min 值。
const hour = await db.Timer.findOne({hour: time[1]}) // finding an hour in the DB
const timer = await db.Timer.findOne({hour: time[1]}, { mins: {"$elemMatch": {min: time[2]}}}) // finding a minute
let maxUsers = 3
for(let i = 0; i < hour.mins[i].users.length; i++) {
if(hour.mins[i].users.length < maxUsers){
console.log(i)
}
}
hour 和 timer 是数组,可以通过time[1](小时)和time[2](分钟)找到。这是我应该使用的。
// how the 'mins' array looks like
[
{
users: [ 432143, 543254, 6545423 ],
min: 21
},
{
users: [ 3421, 432143, 43213 ],
min: 22
},
{ users: [ 7735 ], min: 23 },
{ users: [], min: 20 }
]
// output for 'hour'
{
hour: 15,
mins: [
{ users: [Array], min: 21 },
{ users: [Array], min: 22 },
{ users: [Array], min: 23 },
{ users: [], min: 20 }
]
}
// output for 'timer'
{
mins: [ { users: [Array], min: 21 } ]
}
请建议如何按分钟检查数组。
【问题讨论】:
-
JSON 是一种用于数据交换的文本符号。 (More here.) 如果您正在处理 JavaScript 源代码,而不是处理 string,那么您就不是在处理 JSON。
-
@T.J.Crowder 谢谢。我是新手,所以也许我在这里错了。你能帮帮我吗?不胜感激!
-
恐怕我不会使用 MongoDB。另外,我认为从上面看不清楚
hour和timer的结构是什么......? -
@T.J.Crowder,我更新了帖子,请检查一下,谢谢!
标签: javascript arrays json mongodb