我研究多租户web应用程序。有必要明确一些用户容器,该容器可能相当大,收集了许多文档。我需要能够删除许多文档,例如:
return self::remove(array('LISTID' => $listId), array('safe' => true));
while (there are documents) {
delete(1000 documents);
sleep();
}
谢谢你。
这是您在应用程序中必须做的事情。在PHP中,您可以F.E。做类似的事情:
$found = false;
$ids = $collection->find(array('LISTID' => $listId), array('_id' => 1))->limit(1000);
do {
$found = 0;
$idsToDelete = array(); // we'll collect all the ids here, so that we can delete them in a batch
foreach( $ids as $res )
{
$found++;
$idsToDelete[] = $res['_id'];
}
$collection->remove(array('_id' => array( '$in' => $idsToDelete )));
sleep(15);
} while ( $found );
您需要确保在LISTID上有索引,否则find(array('LISTID'=>$LISTID)
可能会使事情变得非常慢。
在 MongoDB 中,您可以使用 remove() 方法从集合中删除文档,语法格式如下: db.collection_name.remove( <query>, { justOne: <boolean>, writeConcern: <document> } ) 参数说明: query:可选参数,定义要删除文档的条件; justOne:可选
问题内容: 我正在使用Mongoose库通过node.js访问MongoDB 有没有办法 从文档中删除密钥 ?即不只是将值设置为null,而是将其删除? 问题答案: 在早期版本中,您需要删除node-mongodb-native驱动程序。每个模型都有一个收集对象,该对象包含node-mongodb- native提供的所有方法。因此,您可以执行以下操作: 从2.0版开始,您可以执行以下操作: 从2
问题内容: 文件: 有没有办法从数组中提取特定对象?IE如何从项数组中提取ID为23的整个项对象。 我努力了: 但是我很确定我没有正确使用’pull’。据我了解,pull将从数组中拉出字段,而不是对象。 关于如何将整个对象从数组中拉出的任何想法。 另外,我尝试在mongoose / nodejs中执行此操作,也不确定这种类型的内容是否在mongoose API中,但我找不到它。 问题答案: 尝试.
无法从外壳中删除集合, 集合可用并且我的 php 脚本正在访问它的东西(选择|更新) 但当我使用: 它给了我一个错误:
问题内容: 有没有一种简单的方法可以从命令行在充满文本文档的文件夹中删除同一行文本? 问题答案: 如果您的sed版本允许该标志(就地编辑): 如果没有,只需将其放入bash循环中即可:
问题内容: 我正在尝试使用SQL从连接在一起的多个表中删除多行。 表A连接到表B表B连接到表C 我想删除表B和C中与表A中的一行相对应的所有行 问题答案: 好吧,如果您使用过InnoDB表,则可以使用外键设置级联删除,这将自动完成所有操作。但是,如果您出于某种原因使用MyISAM,则只需使用多表DELETE即可: