Mongoose(数组中的数组) - 如何插入?

时间:2016-01-17 03:00:21

标签: javascript node.js mongodb mongoose

enter image description here

您好,我想将数据插入“rss”数组。我怎样才能做到这一点? 这就是我在用户集合中添加新类别的方法:

  user.findOneAndUpdate({
    _id: req.body.ownerId
  },
  { $push: {
    categories: {
      name: req.body.categoryName,
      public: false
    }
  }},
  { safe: true, upsert: true },
  function(err, model) {
    console.log(err);
  });

但是我如何在Sport / rss中添加一些内容?首先,我需要通过id找到一个用户,其次我需要通过id找到一个类别。怎么做,最后插入?

我的变量: req.body.ownerId - 用户ID req.body.categoryId - 类别ID req.body.url - 我要插入类别数组

的rss网址

谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

不建议您在阵列中维护数组。通常最好为类别维护单独的集合。

也就是说,您需要执行两个查询:一个用于为用户填充categories数组,另一个用于填充rss数组中的categories数组对于同一个用户。

在第一次更新查询中:

// Populate the 'categories' array. Insert the empty 'rss' array.
...
{ $push: 
  categories: {
    name: req.body.categoryName,
    public: false,
    rss: []
  }
}
...

在第二次更新查询中:

// Populate the 'rss' array for the same user.
...
{ $push:
  'categories.$.rss': req.body.url
}
...

第二个更新查询将在第一个更新查询中执行。