【问题标题】:How to update/set a field dynamically in mongoDB?如何在 mongoDB 中动态更新/设置字段?
【发布时间】:2025-12-09 16:55:02
【问题描述】:

我正在做一个项目,我必须在其中创建一个数据库并更新架构中的特定字段。该字段名称在对象中动态地出现在我身上。

                Logs.find({username:user.username}, (err,docs) => {
                docs.map(d => {
                    var startTime = new Date(2000, 0, 1,  8, 0);
                    var loginTime = new Date(2000, 0, 1,  hours, minutes);
                    if (loginTime < startTime) {
                        loginTime.setDate(loginTime.getDate() + 1);
                    }

                    var sessions = loginTime - startTime
                    sessions = parseInt((sessions/60000)/15) + 1

                    if(d.date == exactDate){
                        WFHsessions.findOneAndUpdate({username:d.username,date:exactDate},{
                            sessions:true
                        })
                    } else {
                        const NewSession = new WFHsessions({
                            username:d.username,
                            sessions:true
                        })

                    }
                })
            })`

在这里,我必须在 WFHsessions 架构中设置会话值。实际字段名称是一个数字(1,2,3...),该数字存储在会话变量中。如何使用此变量更新该特定字段。如果我按原样编写会话变量,它将在我的模式中查找一个名为“会话”的字段,该字段不存在。 我该如何解决这个问题?提前致谢。

【问题讨论】:

    标签: node.js reactjs mongodb


    【解决方案1】:

    您可以使用子文档。 基本上将您的会话存储在一个对象数组中

    【讨论】:

    • 我无法在 mogoDB 中使用数组,我尝试在模式中定义对象数组,但是当我推送对象时,我的集合中的数组不知道任何其他字段。
    • 如果你不介意可以分享给我你现在的shema吗