MongoDB 更新或创建子字段

问题描述 投票:0回答:1

我想更新或推送产品列表中的产品,

为了获得更好的性能,我通过

date/hours[hour]/categories[category]
EX 进行过滤:

   {
    date: "05/05/24",
    "hours.hour": "09",
    "hours.categories.category": "computers",
    "hours.categories.products": {
      $elemMatch: { product_source_id: 112233},
    }
   }

如果路径存在我想更新产品, 如果某些路径(例如小时/类别/等)不存在,我想创建它。

“upsert”对我没有帮助,因为它只是创建一个全新的文档,但我想修改现有的文档

这是文档场景

  date: { type: String, required: true },
  hours: [
    {
      hour: { type: String, enum: hoursEnum },
      categories: [
        {
          category: { type: String, required: true },
          products: [
            {
              product_source_id: { type: String, required: true },
              last_published: { type: Date, required: true },
            },
          ],
        },
      ],
    },
  ]

我正在使用猫鼬

mongodb mongoose
1个回答
0
投票

看来我从一开始就错了

我应该将文档简化为浅层(更少的嵌套键)并使用“索引”进行高效搜索

© www.soinside.com 2019 - 2024. All rights reserved.