在MongoDB中的嵌入式文档下更新第n个数组值

时间:2019-05-06 09:46:22

标签: arrays mongodb embedded-documents

我只想更新该数组中的第n个位置,而不是更新数组中的所有值。 <svg width="0" height="0"> <symbol id="circle" viewBox="0 0 2 2"> <circle cx="1" cy="1" r=".7" /> </symbol> <symbol id="square" viewBox="0 0 2 2"> <path fill="darkorange" d="M.5 .5 H1.5 V1.5 H.5z" /> </symbol> </svg> <p> <svg width="50" height="50"><use xlink:href="#circle" /></svg> <svg width="50" height="50"><use xlink:href="#circle" fill="teal" stroke="red" stroke-width=".1"/></svg> <svg width="50" height="50"><use xlink:href="#square" /></svg> <svg width="50" height="50"><use xlink:href="#square" fill-opacity=".5"/></svg> </p>

在这里,能否请您告诉我如何将“冷”值更新为“发烧”,其余都一样。

我已经知道另一种存档方法,但是使用此方法我必须更新数组中的所有值: db.patient.insertMany([ {firstName: "Thanga",lastName:"Durai", age:27,history:{disease:["Cold","ulergy"]}}]);

有人可以告诉我如何仅将感冒更新为发烧吗?

2 个答案:

答案 0 :(得分:1)

  

尝试

db.patient.update(
  {
    "firstName":"Thanga",
    "history.disease":"Cold"
  }, 
  {
    $set:{
      "lastName":"Yuvi",
      "age":28,
      "history.disease.0":"Fever"
   }
  })

答案 1 :(得分:0)

您可以在此处利用the positional operator的优势,它将通过指定的disease标准与特定的"history.disease"相匹配

db.patient.updateOne(
   { firstName:"Thanga","history.disease":"Cold"}, 
   { $set:{lastName:"Yuvi","age":28,"history.disease.$":"Fever"}})