更新对象中的对象?

时间:2018-04-04 13:41:39

标签: mongodb meteor

这是我在对象statusDate字段中的更新集合对象,我从此更改为第二个代码但不起作用

这是我的收藏

{
"_id" : "001-8",
"referenceType" : "Invoice",
"refNo" : "00000001",
"tranDate" : ISODate("2018-04-04T21:10:33.419+07:00"),
"customerId" : "0001",
"setting" : {
    "accountId" : "Vendor Deposit",
    "tradeDiscount" : "Discount Received"
},
"statusDate" : {
    "active" : ISODate("2018-04-04T21:10:33.420+07:00")
},

我的代码可以使用,但我希望使用我的第二个代码,但它不起作用

Sale.update(
  {
    _id: invoiceId,
    customerId: customerId,
  },
  {
    $set: {
      status: status,          
      'statusDate.closed': tranDate,
    },

  }
)

我做了类似但不行的事

let statusDate = {}
statusDate['statusDate.closed'] = moment().toDate()
Sale.update(
  {
    _id: invoiceId,
    customerId: customerId,
  },
  {
    $set: {
      status: status,
      statusDate     
    }
  }
)

1 个答案:

答案 0 :(得分:0)

您无法使用更新查询传递对象。 相反,您可以使用findOneAndUpdate

    let statusDate = {}
    let status=true`
    let data =     
     {
      statusDate.["statusDate.closed"]:moment().toDate(),
      status:status 
     }

    sales.findOneAndUpdate(
     {_id: invoiceId,
    customerId: customerId}
    ,{$set:data}
     )