MongoDB-更新对象内的数组

MongoDB-更新对象内的数组,mongodb,Mongodb,我有一个简单的json: { id: 1, basket: { box: [] } } 我需要在盒子阵列中添加ITEN,盒子阵列是篮子阵列的子阵列 我的尝试: updateOne({ id: 1}, { "$push": { "basket": { "box": { "dummy":

我有一个简单的json:

{
   id: 1,
   basket: {
        box: []
   }
}
我需要在盒子阵列中添加ITEN,盒子阵列是篮子阵列的子阵列

我的尝试:

updateOne({ id: 1},  {
                "$push": {
                    "basket": {
                        "box": {
                            "dummy": "test"
                        }
                    }
                }
            }
但它不起作用。我收到这个例外:


未经处理的PromisejectionWarning:MongoError:字段“basket”必须是数组,但类型为文档中的object

您可以这样访问对象:

findOne({ id: 1}, 
{
  "$push": {
      "basket.box": {
        "dummy": "test"
      }
  }
}

您可以像这样访问对象:

findOne({ id: 1}, 
{
  "$push": {
      "basket.box": {
        "dummy": "test"
      }
  }
}

做或不做,没有“尝试”。一个好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,而且是为了未来的访客。虽然这个代码可以回答这个问题,提供关于此代码为什么和/或如何回答此问题的附加上下文可以提高其长期价值。不幸运……现在我得到一个未处理的PromisejectionWarning:MongoError:field'basket.bopx'必须是数组,但在Document中是object类型。您可以将您的模式放在问题中吗?@MarcoJr请检查错误是否正确是因为您在自己的解决方案中尝试了错误的方法,将basket.box作为对象。请删除现有记录并重试,它应该可以正常工作。无论是否,都没有“重试”。一个好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,而且是为了未来的访客。虽然这个代码可以回答这个问题,提供关于此代码为什么和/或如何回答此问题的附加上下文可以提高其长期价值。不幸运……现在我得到一个未处理的PromisejectionWarning:MongoError:field'basket.bopx'必须是数组,但在Document中是object类型。您可以将您的模式放在问题中吗?@MarcoJr请检查错误是否正确是因为您在自己的解决方案中尝试了错误的方法,将basket.box作为对象。请删除现有记录并重试,它应该可以工作。