【问题标题】:How do I get a json and save it to a mongodb subdocument?如何获取 json 并将其保存到 mongodb 子文档?
【发布时间】:2022-01-25 05:20:25
【问题描述】:

我得到一个具有这种结构的 json:

"quality": [
                {
                    "cod": "000000",
                    "month": "09/2021",
                    "average": [
                        {
                            "status": "0",
                            "type": "....",
                        },
                        {
                            "status": "0",
                            "type": "....",
                        },
                    ]
                },
                {
                    "cod": "0000123",
                    "month": "10/2021",
                    "average": [
                        {
                            "status: "0",
                            "type": "....",
                        },
                        {
                            "status: "0",
                            "type": "....",
                        },
                    ]
                },

我可以用这行代码访问这个数组:

response.data.data[0].quality[0].average

我这样声明模型:

var averageSchema = new mongoose.Schema({
  status: String,
  type: String,
  
});
.
.
average: [{averageSchema}],

我可以操纵和访问每一个并保存,但我不能全部。我可以这样单独保存:

const Datas = db.dados_produtivos;
.
.

status = response.data.data[0].quality[0].average[0].status
type = response.data.data[0].quality[0].average[0].type

const data = new Data({
    .
    .
    quality: [{
        "cod": cod,
        "month": month,
        average: [{
            status: status,
            type: type,
        }],
    }],

.
.
.
    await data.save();

                       

如何一次保存所有内容? 我尝试循环保存数据,但无法操作。

我按照link 进行循环,但无济于事:

如果有人可以帮助我分析,我将不胜感激。

【问题讨论】:

    标签: node.js mongodb mongoose mongodb-query


    【解决方案1】:

    您可以通过将响应数据映射到averageSchema数据来构造一个average数组,然后将其设置为存储值

    const Datas = db.dados_produtivos;
    .
    .
    averages = response.data.data[0].quality[0].average.map(a => ({ status: a.status, type: a.type }))
    
    const data = new Data({
        .
        .
        quality: [{
            "cod": cod,
            "month": month,
            average: averages,
        }],
    
    .
    .
    .
        await data.save();
    

    【讨论】:

    • 感谢您的回答。数组保存的数量正确,但只保存了_id!
    猜你喜欢
    • 2015-11-16
    • 2020-09-11
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多