如何在mongo collection中一次运行中查找,迭代和更新文档?

图马诺夫

我需要在集合(事件)中找到某些文档,然后遍历它们并更改每个文档中的部分数据,然后更新集合中的这些文档。这是我的代码:

    Event.find({linkId: linkId}).then(
        docs => {
            docs.forEach((doc) => {
                newTitle = doc.title.split('-')[0] + ' - ' + eventDuration + ' days';
                console.log(newTitle);
                Event.update({_id: doc._id}, {title: newTitle});
            })
        }
    );

控制台显示我收到了每个必需文档的标题,并根据需要对其进行了修改,但是,修改后的数据不会重新插入到集合中。
很感谢任何形式的帮助。谢谢================================================ ===============
第2部分。更多信息
这是基于“ fullcalendar”软件包的交互式日程表Web应用程序的一部分。网络日历上有两个部分-项目和人事。用户在Project部分中创建新事件,这将在mongo DB中创建两个文档(方案在下面)。
活动方案:

eventSchema = new mongoose.Schema({
id: {
    type    : mongoose.Schema.Types.ObjectId,
    default : mongoose.Types.ObjectId,
    index   : { unique: true }
  },
title: String,
start: Date,
end: Date,
linkId: String});

这两个文档具有相同的开始/结束日期,linkID,但标题不同。JS根据事件的显示位置创建标题:在Project部分中,它是“人名-XY天”,在Personnel部分中,它是“项目名-XY天”,其中XY = endDate-startDate。用户能够在日历中动态调整事件大小,以更新数据库中的相应文档。更新日期不是问题,但是更改标题会更加复杂。最初,我使用下面的代码,但后来发现使用updateMany方法使两个标题相同,即,如果用户在“项目”日历部分中调整事件的大小,则两个标题均变为“人名-XY天”,如果在“人事”部分中,则标题变为“项目名-XY天”。因此,我现在要实现的是,当用户调整日历中事件的大小时,JS使用linkID在数据库中找到相应的两个文档,循环浏览它们,更新日期,并根据新的事件持续时间仅更新标题中的XY。希望我有一个想法)。先感谢您

var result = req.body,
    startDate = new Date(result.newStartDate),
    newStartDate = startDate.setUTCHours(12),
    endDate = new Date(result.newEndDate),
    newEndDate = endDate.setUTCHours(12),
    linkId = result.linkId,
    title = result.title,
    trimmedTitle = originalTitle.split('-')[0],
    eventDuration = ((newEndDate - newStartDate) / 86400000) + 1;
    newTitle = trimmedTitle + '- ' + eventDuration + ' days';
Event.updateMany({linkId: linkId}, {start: newStartDate, end: newEndDate, title: newTitle};
图马诺夫

我找到了答案。而不是使用collection.save.(doc)collection.update(doc)我使用collection.create(doc),它的工作原理。最后,代码如下所示:

Event.find({linkId: linkId}).exec((err, docs) => {
        docs.forEach(doc => {
            doc.start = startDate;
            doc.end = endDate;
            doc.duration = eventDuration;
            oldTitle = doc.title;
            doc.title = oldTitle.split('-')[0] + ' - ' + eventDuration + ' days';
            Event.create(doc, (err)=>{
                if(err){
                    console.log(err);
                };
            });
        });
    });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在mongo中更新文档子数组中的字段

来自分类Dev

如何在mongo中查找不包含数组元素的文档

来自分类Dev

如何在Ubuntu上运行mongo shell

来自分类Dev

如何在python中限制mongo查询

来自分类Dev

如何在Promise中重用mongo连接

来自分类Dev

如何在Mongo聚合中折叠数组?

来自分类Dev

如何在Mongo DB中维护Set?

来自分类Dev

如何在Mongo中访问变量的值?

来自分类Dev

如何在Mongo中合并列

来自分类Dev

如何在Mongo中访问变量的值?

来自分类Dev

如何在Rails 6中一次运行所有测试,包括系统测试?

来自分类Dev

如何在Mongo端更新文件?

来自分类Dev

如何在Firestore中一次更新多个集合中的值?

来自分类Dev

如何在Kubernetes集群中一次仅运行一次SQL脚本

来自分类Dev

如何在猫鼬中一次将多个文档插入子文档

来自分类Dev

如何在Mongo聚合中合并文档中的数组字段

来自分类Dev

如何在mongo中插入带有日期的文档?

来自分类Dev

如何在mongo中删除分片索引的重复文档?

来自分类Dev

如何在Mongo DB中合并文档数组

来自分类Dev

如何在Mongo DB中合并数组和文档字段

来自分类Dev

如何在项目位于数组中的地方返回mongo文档?

来自分类Dev

如何在mongo中删除分片索引的重复文档?

来自分类Dev

如何在mongo中过滤子数组并返回文档

来自分类Dev

如何在mongo中优化按日期查找查询

来自分类Dev

如何在mongo中优化按日期查找查询

来自分类Dev

如何使用PyMongo迭代和更新文档?

来自分类Dev

如何在Mongo中更新JSON列表中的键值

来自分类Dev

如何在mongo shell forEach中运行嵌套查询?

来自分类Dev

连接后如何在 mongo shell 中运行 javascript 文件

Related 相关文章

热门标签

归档