在集合数组中插入和删除值

时间:2016-11-23 15:20:04

标签: express mongoose

我是使用Express与MongoDb合作的新手。我目前有一个在对象中有一个数组的集合。该数组旨在保存无限数量的值。

我的问题是当我在集合中向该数组添加新项目时,是否总是必须传递对象中的所有值?

例如,使用以下集合。说我想添加一个新的联系人。

{
   "owner": "Tom Smith",
   "age": "29",
   "contacts": [
      {
         "firstname": "Fred",
         "lastname": "Anderson",
         "age": "22"
      },
      {
         "firstname": "Linda",
         "lastname": "Smith",
         "age": "32"
      },
      {
         "firstname": "Tom",
         "lastname": "James",
         "age": "42"
      },
      {
         "firstname": "Cal",
         "lastname": "Hallaway",
         "age": "57"
      }
   ],
   "city": "New York"
}

我是否需要在传递给终点的对象中明确声明所有值?

示例:

obj.owner = 'Tom Smith';
obj.age = '29';
obj.contacts.firstname = 'Fred';
obj.contacts.lastname = 'Anderson';
obj.contacts.age = '22';

......等等。

然后添加我的新联系人并将完整对象推送到端点进行更新?

有没有办法可以在不推送集合中已存在的所有数据的情况下添加新联系人?

1 个答案:

答案 0 :(得分:0)

在嵌套属性数组中添加新数据:

Model.findOneAndUpdate({
          _id: 'THE ID OF YOUR GYUS'
        }, {
          $push: {
            contacts: {
              firstname: 'TOTO',
              lastname: 'TITI',
              age: 42,
            },
          },
        });