【问题标题】:How to delete particular subdocument in mongoose如何删除猫鼬中的特定子文档
【发布时间】:2016-07-30 20:08:13
【问题描述】:

您好,我是 MongoDB 和编程新手。我正在尝试删除特定父文档中的特定子文档,并且我正在使用 Mongoose 和 Node.js。这是我的 Schema 模型(user.js 文件):

var userStuff = mongoose.Schema({
  itemName: String,
  itemDesc: String
});

var userSchema = mongoose.Schema({
  googleEmail: String,
  googleName: String,
  stuff: [userStuff]
});

exports.user = mongoose.model('User', userSchema);
exports.userStuff = mongoose.model('UserStuff', userStuff);

这是我尝试删除的方法:

  var User = require("../../models/user.js");
  ...
  var userId = req.session.passport.user;
  var deleteItemId = req.params.id;
  User.user.findOne({_id: userId}, function(err, user){
    if(err){
        console.log(err);
      }else {
        User.userStuff.remove({ _id: deleteItemId}, function(err, data){
          if(err){
            console.log(err);
          }else{
            user.save(function(err){
              if(err){
              console.log(err);
              } else {
              res.status(200).send();
              }
            });
          }
        });

    }
  });

你能告诉我如何删除特定用户的特定项目吗?

【问题讨论】:

    标签: javascript node.js mongodb express mongoose


    【解决方案1】:

    要删除特定用户的特定项目,您可以使用 $pull 运算符通过原子更新删除子文档:

    User.user.update(
        { "_id": req.session.passport.user },
        { "$pull": { "stuff": { "_id": req.params.id } } },
        function(err, numAffected) { 
            if(err){
                console.log(err);
            } else {
                res.status(200).send();
            }
        }
    );
    

    【讨论】:

      猜你喜欢
      • 2019-06-06
      • 2021-07-28
      • 2022-11-24
      • 1970-01-01
      • 1970-01-01
      • 2017-07-05
      • 2016-11-09
      • 2017-12-03
      • 2020-06-10
      相关资源
      最近更新 更多