MongoDB将数据推送到特定的数组元素

时间:2016-11-03 08:24:33

标签: arrays node.js mongodb meteor

大家好,我正在做meteor mongo db,我使用findAndModify包

Ips.findAndModify({

      //Find the desired document based on specified criteria
      query: {
        "ipAdr": clientIp,
        connections: {
          $elemMatch: {
            connID: clientConnId
          }
        }
      },

      //Update only the elements of the array where the specified criteria matches
      update: {
        $push: {
          'connections': {
            vid: result.data.vid,
            firstName: result.data.properties.firstname.value,
            lastName: result.data.properties.lastname.value
        }
      }
    }); //Ips.findAndModify

所以我找到了我需要的元素,但是我的信息被推送到整个连接数组,但我想将我的信息推送到该特定元素。我该怎么办?我试过了

$push: {
              'connections.$': {
                vid: result.data.vid,

但它给出了错误。 请帮忙。

1 个答案:

答案 0 :(得分:1)

你不需要在这里使用 $ push 运算符,因为它向数组添加了一个新元素,而你需要修改数组中已有的元素,试试 $ set 运算符更新如下:

update: {
        $set: {
          'connections.$.vid': result.data.vid,
          'connections.$.firstName': result.data.properties.firstname.value,
          'connections.$.lastName': result.data.properties.lastname.value
        }
      }

考虑到这种方式,您只会从 $ elemMatch 语句中更改满足条件的数组中的一个元素。