首页 > 解决方案 > 在猫鼬中更新对象的对象

问题描述

我正在使用 node.js 和 mongoose,但我遇到了问题。
这是我正在使用的模型:

const mongoose = require('mongoose');

const { Schema } = mongoose;

const prodSchema = new Schema({
  name: String,
  rate: String,
  rate_number: String,
  type: String,
  offers: {
    netflix: {
      url: String,
    },
    amz: {
      url: String,
    },
  },
  updated_at: Date,
}, {
  collection: 'prod',
});

const ProdModel = mongoose.model('prod', prodSchema);

module.exports = ProdModel;

例如,我想设置 netflix url,然后设置 amz url。

ProdModel.updateOne({ name: currentName },{ offers: { amz: { url: movies[i].url } } });

但是当我想例如设置 netflix url amz 返回一个空对象:/

标签: node.jsmongodbmongoose

解决方案


您可以使用 mongo $set运算符来更新嵌套属性,而无需覆盖父对象中的其他属性。

ProdModel.updateOne({ name: currentName }, { $set: { "offers.netflix.url": movies[i].url } });

推荐阅读