首页 > 解决方案 > 如何 $push:在使用 $inc 增加 id 后进入 mongo-db

问题描述

在插入 Mongodb 之前,我需要增加 ID 的值。我试过 $inc 但它不起作用。这是我的猫鼬模式

const subSchema = new mongoose.Schema({
    id:{
        type:Number,
        default:1

    },
    time : { type : Date, default: Date.now },
    description:{
        type:String,
        required:true
    }
})
const activitySchema = new mongoose.Schema({
    userid:{
        type:String,
        required:true
    },
    activity:[subSchema]
})

我正在尝试更新 subSchema 中的 id,稍后在 activitySchema 中使用

这就是 id 最初所做的。

findOneAndUpdate({userid:userid}, { $push: { activity: {description:"Test",$inc:{ id: 1} } } })

正在插入文档,但默认值为 1
当我从 id 中删除 default:1 时,文档正在更新而没有 id
有什么简单的解决方案吗?

标签: javascriptnode.jsmongodbmongoose

解决方案


它不可能在一个查询中完成。相反,您可以分两步完成:

const user = await Activity.findOne({ userid });
//                  ^^^^^ put your collection name here
if (user) {
    const activityCount = user.activity.length;

    await user.updateOne({ $push: { activity:
        { id: activityCount + 1, description: 'Dolor sit amet' }
    }})
}

推荐阅读