2

我想存储一组嵌套的子文档,例如下面的一个:

[
  {"2021-02-01income":{"value":37.95,"tax":0,"type":"income"}},
  {"2021-03-01income":{"value":38.25,"tax":0,"type":"income"}},
  {"2021-03-08fund": {"value":-78,"type":"fund","transaction":"610378deead56742a898443b"}},
  {"2021-04-01income":{"value":38.53,"tax":0,"type":"income"}},
  {"2021-07-01income":{"type":"income","tax":0,"value":134}},
  ]

我想出了以下不起作用的架构,因为您可以看到对象数组基于唯一键嵌套对象......我可以尝试任何解决方法:

const incomeSchema = mongoose.Schema({
  type: { type: String, required: true },
  value: { type: Number, required: true },
  tax: { type: Number, required: false },
  transaction: {
    type: mongoose.Schema.Types.ObjectId,
    required: false,
    ref: 'Transaction',
  },
});

const investmentSchema = mongoose.Schema(
  {
    incomes: [{ type: incomeSchema }],
    name: { type: String, required: true },
    user: {
      type: mongoose.Schema.Types.ObjectId,
      required: false,
      ref: 'User',
    },
    account: {
      type: mongoose.Schema.Types.ObjectId,
      required: true,
      ref: 'Account',
    },
    broker: {
      type: mongoose.Schema.Types.ObjectId,
      required: true,
      ref: 'Broker',
    },
    type: { type: String, required: true },
    rate: { type: String, required: true },
    indexer: { type: String, required: true },
    investment_date: { type: Date, required: true },
    due_date: { type: Date, required: true },
    initial_amount: { type: Number, required: true },
    accrued_income: { type: Number, required: false, default: 0 },
    taxes: { type: Number, required: false, default: 0 },
    

  },
  { timestamps: true }
);

const Investment = mongoose.model('Investment', investmentSchema);
4

1 回答 1

0

我找到了一种解决方法....我刚刚将 Transaction 架构中的 _id 设置为字符串,现在一切正常...我的意思是我可以更新嵌套子文档的数组

于 2021-07-31T05:39:31.207 回答