无法将数据推送到mongo数据库中的当前对象

时间:2016-09-13 10:27:44

标签: javascript node.js mongodb node-mongodb-native

我使用的是mongodb native和Node.js 6.5.0。

我在mongodb中有用户对象,结构如下:

{ 
    "_id" : ObjectId("57d7d294d96a73d128c46db9"), 
    "id" : "105862592064", 
    "labels" : [

    ]
}

我有一个循环(对于找到的每个用户)从API获取数据,然后将其推送到数组类型的对象属性。用户ID user.id和要推送的数据的位置为resp.labels

这是我的代码:

db.collection('users').update(
          {"id":user.id},
          {"$push":{"users.labels":resp.labels}}
)

它不会返回任何错误,也不会更新对象。我做错了什么?

4 个答案:

答案 0 :(得分:2)

  <tr ng-repeat="student in students">
    <td contenteditable="true">{{student.Id}}</td>
    <td contenteditable="true">{{student.FullName}}</td>
    <td contenteditable="true">{{student.Gender}}</td>       
    <td contenteditable="true">{{student.Grade}}</td>
  </tr>

答案 1 :(得分:1)

尝试$( document).ajaxSend(function() { ShowLoading(); });

$set

答案 2 :(得分:1)

$push用于将单个元素推送到数组。将$push$each一起使用以推送多个元素。此外,对象标签周围的引号不一定是必要的:

db.collection('users').update(
      { id:user.id },
      { $push: { labels: { $each: resp.labels } } }
)

答案 3 :(得分:0)

尝试加入{upsert:true}

db.collection('users').update(
          {"id":user.id},
          {"$push":{"users.labels":resp.labels}},
          {"upsert": true}
);

如果Upsert尚未存在,则会插入新值。