首页 > 解决方案 > 当某些数据从另一个集合中删除但两个集合都在同一个集群下时,更新 MongoDB 集合中的数据

问题描述

当某个数据的时间戳在同一集群下的另一个集合中过期时,是否可以更新 MongoDB 中一个集合中的某个字段?如果可以,你能举个例子吗?

我要完成的示例:collection1: [{ name:"ABC", Age:26, value:true }]

Collection2:[{名称:“ABC”,结果:“通过”}]

所以,如果名称为 ABC 的数据在 collection2 中过期,我想在 collection1 中将 ABC 的值更改为 false。

标签: node.jsmongodbexpressmongoose

解决方案


我知道这不完全是您想要的,但是通过此查询,您可以在不更新 col1 的情况下获得相同的结果,如果 col2 中没有特定名称的任何数据,则使用聚合并加入两个集合返回值为 false 否则为 true

db.col1.aggregate([
    {$lookup:{
        from:"col2",
        localField:"name",
        foreignField :"name",
        as:"t"
    }},
    {
        $project:{
            name:1,
            Age:1,
            value:{$cond:{ if: { $eq: [ [], "$t" ] }, then: false, else: true }}
        }
    }
])

推荐阅读