首页 > 解决方案 > 返回填充的项目匹配条件

问题描述

我正在尝试更新 mongoDB 和 Node.js 中的内部文档。我有一个引用另一个集合的集合。通过访问第一个集合,我想更新第二个集合。

这是架构结构:

// User
mongoose.Schema({
    email: {
        type: String,
        required: true
    }
    listsID: {
        type: [{ type: mongoose.Types.ObjectId, ref: 'List' }],
        required: false
    }
});

// List
mongoose.Schema({
    name: {
        type: String,
        required: true
    }
});

我想做的是根据用户获取一个列表文档,然后更新我刚刚检索到的列表。它看起来像下面这样:

const list = await User.findById(someID).find({name: someName});

以上显然不是正确的方法,但这就是我想要实现的。这样做的正确方法是什么?

基本上,我想更新listID特定用户的数组

编辑

这是用户使用 findByID 的结果数据:

没有填充

{
    "listsID": [
        "5d902b1b63ebcf9fff238faa",
        "5d90e61c185bd8cfafa04c6e"
    ],
    "_id": "5d8e28562d657f6ebb67c357",
    "email": "someEmail@gmail.com"
}

填充

{
    "listsID": [
        {
            "_id": "5d902b1b63ebcf9fff238faa",
            "name": "First List", // This is what I want to update
        },
        {
            "_id": "5d90e61c185bd8cfafa04c6e",
            "name": "another list",
        }
    ],
    "_id": "5d8e28562d657f6ebb67c357",
    "email": "someEmail@gmail.com"
}

标签: node.jsmongodbmongoosemongoose-schemamongoose-populate

解决方案


推荐阅读