【问题标题】:Add a document inside an array that is inside another array in mongodb在 mongodb 中另一个数组内的数组内添加文档
【发布时间】:2021-05-05 02:09:03
【问题描述】:

首先我给你一个简单的输出:

{
    "_id" : ObjectId("6016fcca3a406de622cfdc8f"),
    "pfname" : "charbel",
    "plname" : "alam",
    "address" : "Baskinta",
    "gender" : "Male",
    "phone" : "",
    "age" : "22",
    "addmissions" : [
            {
                    "sickness" : "diabete",
                    "arrival_date" : "13-1-2021",
                    "payments" : [ ]
            }
    ],
    "consultations" : [ ]

}

我是 MongoDB 的新手,并且 我想在“addmissions”数组中的数组“payments”中添加一个文档

我一直在尝试这个命令:

db.patients.update( {"pfname":"charbel"}, {$set:{"addmissions": {"sickness":"diabete","arrival_date":"13-1-2021", {$push:{"payments":{"medicaments":[],"surgeries":[],"total_price":"100000","amount_paid":"60000","amount_left":"40000"}}} }} });

但我收到以下错误: 未捕获的异常:SyntaxError:预期的属性名称,得到'{':

我也试过这样的:

 db.patients.update({"pfname"
    :"charbel"},{$push:{addmissions.payments:{"medicaments":[],"surgeries":[],"total_price":"100000","amount_paid":"60000","amount_left":"40000"}}})

它给了我这个错误: 未捕获的异常:SyntaxError: missing : after property id :

我还想在药物数组中添加一条记录 我正在尝试这个查询:

db.patients.update({
"pfname":"charbel",
    "addmissions.sickness":"diabete",
        "addmissions.arrival_date":"13-1-2021",
        "addmissions.payments.total_price":"100000",
        "addmissions.payments.amount_paid":"60000",
        "addmissions.payments.amount_left":"40000"
        },{$push:{"addmissions.$.payments.medicaments":{"medname":"panadol","medprice":"30000"}}})



But it is giving me this error:
                "errms

g" : "无法在元素 {payments: [ { medicaments: [], Surgery: [], total_price: "100000", amount_paid: "60000", amount_left: "40000" } ]} 中创建字段 'medicaments' "

【问题讨论】:

  • MongoDB 使用the dot notation 访问数组的元素并访问嵌入文档的字段。
  • 我编辑了我的问题,你能看看吗??

标签: mongodb insert nosql


【解决方案1】:

试试这个。

db.collection.update(
   <query>,
   <update>
);

查询:更新的选择标准。如果您打算更新单个文档,请确保这些条件是唯一的。

更新:要应用的修改。这里我们使用 dot notation 来访问 admissions 数组的元素并访问 cmets 字段。

db.collection.update({
  "pfname": "charbel",
  "addmissions.sickness": "diabete",
  "addmissions.arrival_date": "13-1-2021"
},
{
  $push: {
    "addmissions.$.payments": {
      "medicaments": [],
      "surgeries": [],
      "total_price": "100000",
      "amount_paid": "60000",
      "amount_left": "40000"
    }
  }
})

【讨论】:

  • 您能否向我解释一下为什么在添加和付款之间加上 $ 符号?因为我正在尝试在药物数组中添加一个文档
  • $ 运算符根据查询语句中的某些条件从集合中的每个文档中投影第一个匹配的数组元素。基本上$push 进入addmissions 数组中与我的查询匹配的第一个文档的payments 字段
  • 好的,非常感谢!你能再帮忙做一件事吗?如何在药物数组中添加记录?
  • 阅读:docs.mongodb.com/manual/reference/operator/update/…,如果仍有问题,请提出另一个问题。
猜你喜欢
  • 2018-12-08
  • 1970-01-01
  • 1970-01-01
  • 2019-08-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-17
  • 1970-01-01
  • 2021-11-12
相关资源
最近更新 更多