mongodb – Mongoose – 从DBref数组和项目本身中删除项目

我有一个看起来有点像的架构:

var postSchema = new Schema({
   created: { type: Date, default: Date.now },
   updated: { type: Date, default: Date.now },
   comments: { type: [Schema.ObjectId], ref: 'Comment' }
});

所以我的评论集合是一个对象id的集合,引用我的评论模式/集合.

我需要在查询中删除其中的一些,所以我正在尝试这个:

var comments = [1, 2, 4];    

Post.update({ _id: post_id}, {'$pullAll': {comments: comments }})
  .exec(function(err) {
     // How to remove documents with 1, 2, 4 ids from a Comment collection properly
});

执行上面的代码后,我从Post.com中删除了一条评论ID,但我还需要从“评论”集合中删除这些评论.我该怎么办?

编辑:我怎样才能获得未被删除的文件的ID.简单的例子:

Post.comments = [1, 2, 3]; 
Post.update({ _id: post_id}, {'$pullAll': {comments: [1,2]}});

在上面的代码中,Post.comments只有1,2,3,但我们试图拉[1,2],所以我需要知道在Post.comments中不存在id = 3而我不需要从“评论”集合中删除它.

最佳答案 使用
$in运算符:

var comments = [1, 2, 4];    

Post.update({ _id: post_id}, {'$pullAll': {comments: comments }})
  .exec(function(err) {
    Comment.remove({ _id: { $in: comments }}, function(err, numberRemoved) {
      // The identified comments are now removed.
    });
  });
});
点赞