如何使用猫鼬将数组中的数组推入数组?

时间:2018-10-18 03:08:16

标签: javascript node.js mongodb mongoose

我有一个用Mongoose创建的User schema,其中包含一个customer数组,并且在该customer数组中还有另一个fleet数组。我已经弄清楚了如何推送到customer中的User schema数组,但是我不知道如何遍历客户,通过id或name找到customer,然后将数据推送到fleet数组中。

这是我的User schema

const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({
    username: {
        type: String,
        default: ''
    },
    password: {
        type: String,
        default: '',
    },
    registerDate: {
        type: Date,
        default: Date.now()
    },
    customer: [{
        name: {
            type: String,
            default: '',
        },
        email: {
            type: String,
            default: 'No email addresses found',
        },
        fleet: [{
            unitType: {
                type: String,
                default: 'No type selected',
            },
            unitNumber: {
                type: String,
                default: 'No unit number provided',
            },
            vinNumber: {
                type: String,
                default: 'No vin number provided'
            },
        }]
    }]
});

module.exports = mongoose.model('User', UserSchema);

我能够弄清楚如何将新客户推入customer数组中没问题。我的问题是我不知道如何遍历customer数组,一旦找到所需的customer,就将数据推送到fleet数组中。我真的对如何在Google搜索中写词感到困惑!希望它已经足够详细了,如果您需要查看其他代码,请告诉我。

1 个答案:

答案 0 :(得分:0)

您需要使用位置'$'操作。阅读here

UserSchema.update(
    {'customer.email':'xyz@email.com'},
    {
        $push:{
            'customer.$.fleet':<fleet object>
        }
    },function(err,result){

    })

---或---

UserSchema.update(
    {'customer.email':'xyz@email.com'},
    {
        $set:{
             'customer.$.fleet':[fleet array]
        }
    },function(err,result){

    })

希望这会有所帮助。