大佬教程收集整理的这篇文章主要介绍了更新 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,请注明来意。