2016-11-23 60 views
0

我是使用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'; 

...等

,然后加入我的新的接触和推满对象端点来更新?

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

回答

0

到嵌套属性阵列中添加新的数据:

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