javascript - 如何删除 Mongoose 中的特定子文档

标签 javascript node.js mongodb express mongoose

大家好,我是 MongoDB 和编程的新手。我正在尝试删除特定父文档中的特定子文档,并且我正在使用 Mongoose 和 Node.js。这是我的架构模型(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();
              }
            });
          }
        });

    }
  });

你能展示我如何为特定用户删除特定项目吗?

最佳答案

要为特定用户删除特定项目,您可以使用 $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();
        }
    }
);

关于javascript - 如何删除 Mongoose 中的特定子文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36518605/

相关文章:

javascript - python中的零填充右移

javascript - 项目单独显示

javascript - NodeJS : Save menu order

node.js - 将 Nodejs 与 Firebase 一起使用

MongoDB/Mongoose 对日期字段的唯一约束

javascript - Ajaxcall 不发送输入(MongoDB 数据库)

javascript - onsubmit 方法不会停止提交

linux - 是否可以将 Node.js 应用程序从 Linux 发布到 Azure?

c# - .net core 3 preview 8 升级后 React SPA/Embedded Identity Server 问题

mongodb - 尽管 mongodb 中有数据,为什么 db.database.find() 没有结果?