MongoDB保存和更新数组元素


MongoDB save and update array element

我已经保存了这个当前值

db.mycol.save({name:'elbren',lastname:'antonio',subjects:{}})
结果:

"_id" : ObjectId("576db356332a8fc87bf769be"),
"name" : "elbren",
"lastname" : "antonio",
"subjects" : {
}

我需要的是这个结果:

"_id" : ObjectId("576db356332a8fc87bf769be"),
"name" : "elbren",
"lastname" : "antonio",
"subjects" : 
{
    {
         code: "sub1",
         Description: "desc1",
         Unit: 3
     },
     code: "sub2",
     Description: "desc2",
     Unit: 3
}

什么是最好的事情做这是我想添加主题到_id?

要创建文档,以便获得理想的结果,只需直接编写:

db.mycol.save({name:'elbren',lastname:'antonio',subjects:{
    {
        code: "sub1",
        Description: "desc1",
        Unit: 3
    },
    code: "sub2",
    Description: "desc2",
    Unit: 3
}})

如果你想改变("修复")现有的文档,你必须使用update:

db.mycol.update(
    { name : "elbren", lastname : "antonio" },
    { $set: { subjects:{
                  {
                      code: "sub1",
                      Description: "desc1",
                      Unit: 3
                  },
                  code: "sub2",
                  Description: "desc2",
                  Unit: 3
              }
    }}
);

这里{ name : "elbren", lastname : "antonio" }是一个匹配您想要的文档的查询,第二部分是更新参数。

使用"$push"操作符将数组添加到当前对象

// in php e.g:
['$push'=>['fild_value'=>array('mail=>'me@mail.com','tag'=>'personal')]]

More result this:

{
   "_id": 12345678,
   "fild_value": [
        {
        "mail":"me@mail.com",
        "tag":"personal"
         },
         {
          "mail":"job@mail.com",
          "tag":"worker"
          }
      ]
 }

MongoDB提供数组操作符($push/$pull,$addToSet,$elemMatch等)