Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在使用Node.js Mongoose搜索结果后删除文档?_Node.js_Mongodb_Express_Mongoose_Database - Fatal编程技术网

如何在使用Node.js Mongoose搜索结果后删除文档?

如何在使用Node.js Mongoose搜索结果后删除文档?,node.js,mongodb,express,mongoose,database,Node.js,Mongodb,Express,Mongoose,Database,上述方法不起作用。 我想删除100项或更多的搜索结果,我应该怎么做 使用此查询 AAAModel.find({'category' : category}) .skip(100) .sort({date: 'desc'}) .exec(function(err, result) { if (err) { next(err); } if (

上述方法不起作用。 我想删除100项或更多的搜索结果,我应该怎么做

使用此查询

        AAAModel.find({'category' : category})
          .skip(100)
          .sort({date: 'desc'})
          .exec(function(err, result) {
          if (err) {
            next(err);
          }
          if (result) {
            result.remove();
          }
        });
使用此查询

        AAAModel.find({'category' : category})
          .skip(100)
          .sort({date: 'desc'})
          .exec(function(err, result) {
          if (err) {
            next(err);
          }
          if (result) {
            result.remove();
          }
        });
使用此查询

        AAAModel.find({'category' : category})
          .skip(100)
          .sort({date: 'desc'})
          .exec(function(err, result) {
          if (err) {
            next(err);
          }
          if (result) {
            result.remove();
          }
        });
使用此查询

        AAAModel.find({'category' : category})
          .skip(100)
          .sort({date: 'desc'})
          .exec(function(err, result) {
          if (err) {
            next(err);
          }
          if (result) {
            result.remove();
          }
        });

我们知道,参数
results
find
回调中的文档数组,而不是单个文档。所以您可以迭代它并逐个删除项,尽管这不是为了提高性能而删除文档的最佳方法


实际上,mongoose可以用来删除文档,但是查询条件直到现在才可以跳过和排序。

我们知道,参数
results
find
回调中的文档数组,而不是单个文档。所以您可以迭代它并逐个删除项,尽管这不是为了提高性能而删除文档的最佳方法


实际上,mongoose可以用来删除文档,但是查询条件直到现在才可以跳过和排序。

我们知道,参数
results
find
回调中的文档数组,而不是单个文档。所以您可以迭代它并逐个删除项,尽管这不是为了提高性能而删除文档的最佳方法


实际上,mongoose可以用来删除文档,但是查询条件直到现在才可以跳过和排序。

我们知道,参数
results
find
回调中的文档数组,而不是单个文档。所以您可以迭代它并逐个删除项,尽管这不是为了提高性能而删除文档的最佳方法

实际上,mongoose可以用来删除文档,但是查询条件直到现在都不能跳过和排序。

我也遇到了同样的问题。 事实上,在最新的mongoose查询中有remove方法。因此,它可以这样工作:

 AAAModel.find(
               {'category' : category}, 
               { skip: 100,sort:{date: -1}}, 
               function(err, results) { 
                  if (err) {
                      next(err);
                  }
                  if (result) {
                      result.remove();
                  }
 });
但在我的例子中,此代码删除了所有记录 因此,可能的解决办法是

AAAModel.find({'category' : category})
  .skip(100)
  .sort({date: -1})
  .remove(function(err, result) {
  if (err) {
    next(err);
  }
  if (result) {
    console.log("Number of deleted records:" +  result);
  }
});
不过可能会很贵。

我也有同样的问题。 事实上,在最新的mongoose查询中有remove方法。因此,它可以这样工作:

 AAAModel.find(
               {'category' : category}, 
               { skip: 100,sort:{date: -1}}, 
               function(err, results) { 
                  if (err) {
                      next(err);
                  }
                  if (result) {
                      result.remove();
                  }
 });
但在我的例子中,此代码删除了所有记录 因此,可能的解决办法是

AAAModel.find({'category' : category})
  .skip(100)
  .sort({date: -1})
  .remove(function(err, result) {
  if (err) {
    next(err);
  }
  if (result) {
    console.log("Number of deleted records:" +  result);
  }
});
不过可能会很贵。

我也有同样的问题。 事实上,在最新的mongoose查询中有remove方法。因此,它可以这样工作:

 AAAModel.find(
               {'category' : category}, 
               { skip: 100,sort:{date: -1}}, 
               function(err, results) { 
                  if (err) {
                      next(err);
                  }
                  if (result) {
                      result.remove();
                  }
 });
但在我的例子中,此代码删除了所有记录 因此,可能的解决办法是

AAAModel.find({'category' : category})
  .skip(100)
  .sort({date: -1})
  .remove(function(err, result) {
  if (err) {
    next(err);
  }
  if (result) {
    console.log("Number of deleted records:" +  result);
  }
});
不过可能会很贵。

我也有同样的问题。 事实上,在最新的mongoose查询中有remove方法。因此,它可以这样工作:

 AAAModel.find(
               {'category' : category}, 
               { skip: 100,sort:{date: -1}}, 
               function(err, results) { 
                  if (err) {
                      next(err);
                  }
                  if (result) {
                      result.remove();
                  }
 });
但在我的例子中,此代码删除了所有记录 因此,可能的解决办法是

AAAModel.find({'category' : category})
  .skip(100)
  .sort({date: -1})
  .remove(function(err, result) {
  if (err) {
    next(err);
  }
  if (result) {
    console.log("Number of deleted records:" +  result);
  }
});

但是可能会非常昂贵。

您可以尝试以下方法之一:

AAAModel.find({'category' : category})
  .select("_id")
  .skip(100)
  .sort({date: -1})
  .exec(function(err, idObjLst) {
    if (err) {
      return next(err);
    }
    var ids = idObjLst.map(function(idObj) { return idObj._id; });
    if (ids && ids.length > 0) {
    AAAModel.remove({_id: {$in: ids}}).exec(function(err, result) {
       console.log("Removed " + result + " elements");
     });
});


您可以尝试以下方法之一:

AAAModel.find({'category' : category})
  .select("_id")
  .skip(100)
  .sort({date: -1})
  .exec(function(err, idObjLst) {
    if (err) {
      return next(err);
    }
    var ids = idObjLst.map(function(idObj) { return idObj._id; });
    if (ids && ids.length > 0) {
    AAAModel.remove({_id: {$in: ids}}).exec(function(err, result) {
       console.log("Removed " + result + " elements");
     });
});


您可以尝试以下方法之一:

AAAModel.find({'category' : category})
  .select("_id")
  .skip(100)
  .sort({date: -1})
  .exec(function(err, idObjLst) {
    if (err) {
      return next(err);
    }
    var ids = idObjLst.map(function(idObj) { return idObj._id; });
    if (ids && ids.length > 0) {
    AAAModel.remove({_id: {$in: ids}}).exec(function(err, result) {
       console.log("Removed " + result + " elements");
     });
});


您可以尝试以下方法之一:

AAAModel.find({'category' : category})
  .select("_id")
  .skip(100)
  .sort({date: -1})
  .exec(function(err, idObjLst) {
    if (err) {
      return next(err);
    }
    var ids = idObjLst.map(function(idObj) { return idObj._id; });
    if (ids && ids.length > 0) {
    AAAModel.remove({_id: {$in: ids}}).exec(function(err, result) {
       console.log("Removed " + result + " elements");
     });
});




您是否使用mongoose访问数据?是的。我选择mongoose。您是否使用mongoose访问数据?是的。我选择mongoose。您是否使用mongoose访问数据?是的。我选择mongoose。您是否使用mongoose访问数据?是的。我选择猫鼬。如何使用移除方法?我想在执行查询后删除结果。
结果
没有删除,而是使用
results.forEach(r=>r.remove())
如何使用删除方法?我想在执行查询后删除结果。
结果
没有删除,而是使用
results.forEach(r=>r.remove())
如何使用删除方法?我想在执行查询后删除结果。
结果
没有删除,而是使用
results.forEach(r=>r.remove())
如何使用删除方法?我想在执行查询后删除结果。
results
上没有remove,而是使用
results.forEach(r=>r.remove())
好主意,但是
ids
将是一个看起来像
{id:ObjectId}的文档数组
所以我认为您还需要使用
ids.map
ids
重塑为一个objectid数组,然后再将其与
$in
一起使用。JohnnyHK:您当然是对的,但是,这段代码也可以工作(可能是因为mongoose内部的特定迭代过程)。我已经用猫鼬3.8.22进行了测试。有趣的是,它在3.8.23中对我不起作用——没有任何东西被删除。@johnyhk。真奇怪。我已将mongoose更新到3.8.24。我的项目中有一个工作示例。尽管如此,即使有效,也是错误的:)根据@JohnnyHK的评论,答案已经更新。好主意,但是
ids
将是一个看起来像
{u id:ObjectId}的文档数组
所以我认为您还需要使用
ids.map
ids
重塑为一个objectid数组,然后再将其与
$in
一起使用。JohnnyHK:您当然是对的,但是,这段代码也可以工作(可能是因为mongoose内部的特定迭代过程)。我已经用猫鼬3.8.22进行了测试。有趣的是,它在3.8.23中对我不起作用——没有任何东西被删除。@johnyhk。真奇怪。我已将mongoose更新到3.8.24。我的项目中有一个工作示例。尽管如此,即使有效,也是错误的:)根据@JohnnyHK的评论,答案已经更新。好主意,但是
ids
将是一个看起来像
{u id:ObjectId}的文档数组
所以我认为您还需要使用
ids.map
ids
重塑为一个objectid数组,然后再将其与
$in
一起使用。JohnnyHK:您当然是对的,但是,这段代码也可以工作(可能是因为mongoose内部的特定迭代过程)。我已经用猫鼬3.8.22进行了测试。有趣的是,它在3.8.23中对我不起作用——没有任何东西被删除。@johnyhk。真奇怪。我有最新消息