程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了更新 Mongo 中的嵌套数组对象大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决更新 Mongo 中的嵌套数组对象?

开发过程中遇到更新 Mongo 中的嵌套数组对象的问题如何解决?下面主要结合日常开发的经验,给出你关于更新 Mongo 中的嵌套数组对象的解决方法建议,希望对你解决更新 Mongo 中的嵌套数组对象有所启发或帮助;

我有一个如下所示的 studentClass 集合:

[
{
  "_ID": ObjectID("60923c997b4d3205009a981a"),"attended": [
    {
      "in": "2021-05-05T06:35:05.226+00:00","out": "2021-05-05T06:45:05.226+00:00"
    },{
      "in": "2021-05-05T06:47:05.226+00:00","out": "2021-05-05T06:55:05.226+00:00"
    },{
      "in": "2021-05-05T06:56:05.226+00:00"
    },{
      "in": "2021-03-03T07:10:00.628Z"
    }
  ],"studentID": ObjectID("608a42e8224c549ad9a9ab51"),"active": true
},{
  "_ID": ObjectID("6098f6f974af29682772fbe6"),{
      "in": "2021-05-05T06:59:05.226+00:00","out": "2021-05-05T07:20:05.226+00:00"
    }
  ],{
  "_ID": ObjectID("6098f6f974af29682772fbe7"),"attended": [],"active": true
}]

对于一个给定的 _ID,我需要根据以下条件更新 attended 数组: 需要找到缺少 out 键的 last 数组元素。 attended 的数组元素应该像其他数组元素一样使用 out 键进行更新。

这是我试过的:

const markstudentexitFromClass = (studentClassID,exitTimE) => {

    return new Promise((resolve,reject) => {
        studentClasses.updateOne(
            { _ID: new mongoose.Types.ObjectID(studentClassID),"attended.out" : {$exists: falsE}},{ $set: { "attended.$.out": new Date(exitTimE) } },function (err,updatedData) {
                if (err) {
                    reject(err);
                } else {
                    resolve(updatedData);
                }
            }
        )
    })
}

这不会更新给定 _ID 的 attended 数组的任何数组元素。就像 $ 位置运算符找到第一个数组元素一样,最后一个数组元素有什么吗?

我做错了什么?

更新: 所以,我通过将 updateOne 的 match 子句更改为:

const markstudentexitFromClass = (studentClassID,"attended" :{"$elemmatch":{"out":{$exists: falsE}}} },updatedData) {
                if (err) {
                    reject(err);
                } else {
                    resolve(updatedData);
                }
            }
        )
    })
}

但是,我仍然无法弄清楚如何获取 attended 数组的最后一个匹配元素而不是第一个。有什么指点吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的更新 Mongo 中的嵌套数组对象全部内容,希望文章能够帮你解决更新 Mongo 中的嵌套数组对象所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。