如何更新猫鼬数组中的元素?

时间:2020-04-10 06:41:15

标签: node.js mongodb express mongoose

现在这是我拥有的架构

const mongoose = require('mongoose')

const {Schema} = mongoose

const docsSchema = new Schema({
    github_id: {
        type: String,
        required: true
    },
    folders: [{
        name: {
            type: String
        },
        docs: [{
            title: {
                type: String
            },
            body: {
                type: String
            }
        }]
    }]
},{timestamps: true})

const Docs = mongoose.model('Doc',docsSchema)

module.exports = Docs

我要做的是在特定文件夹内创建新文档。 这意味着我必须更新docs数组内的folders数组 我使用猫鼬,与表达创建一个休息的API。


有什么想法吗?

1 个答案:

答案 0 :(得分:0)

假设您要向一个文档添加多个文件夹,则可以使用普通的mongodb更新语法:

Docs.updateOne(
  { github_id: githubId, 'folders.folderName': folderName },
  { $push: { 'folders.$.docs': each: [newDocs] }
)

请注意,这不适用于猫鼬中间件。如果需要运行中间件,请使用:findOneAndUpdatehttps://mongoosejs.com/docs/tutorials/findoneandupdate.html

参考: