python - 删除 find().limit() 中返回的所有文档
问题描述
我db.collection.find({}, {'_id': False}).limit(2000)
用来从集合中获取文档。该文档被发送到 Facebook API,API 返回成功后,需要从集合中删除该文档。
我的主要疑问是:
- 有没有办法在不使用 for 循环的情况下删除所有这 2000 个文档?我知道
collection.find
返回一个游标,有没有办法在 a 中使用这个游标delete_many
?
我的文档结构是:
{
"_id" : ObjectId("61608068887f1a0e2162d94b"),
"event_time" : "1632582893",
"value" : "549.9000",
"contents" : [
{
"product_id" : "1-1",
"quantity" : "1.000000",
"value" : "10"
}
]
}
解决方案
为了解决这个问题,根据@adarsh 和@JF 的评论,我使用了以下代码:
rm = [x['_id'] for x in MongoDB(mongo).db.get_collection("DataToSend").find({}, {'_id' : 1}).limit(2000)
MongoDB(mongo).db.get_collection("DataToSend").delete_many({'_id' : { '$in' : list(rm)}})
推荐阅读
- django - 导航到其他页面时允许从浏览器上传大文件
- maven - 无法在项目 XYZ(项目名称)上执行目标 org.apache.maven.plugins:maven-resources-plugin:2.7:resources (default-resources):标记无效
- javascript - axios 响应数据在多选时预选
- openssl - mosquitto_pub 给出以下错误:1408F10B:SSL 例程:ssl3_get_record:错误的版本号
- sql - 如何在 PostgreSQL 中选择具有级别的表的所有层次结构
- angular - 在进行 http 调用时将搜索过滤器添加到 observable
- android - 无法在 android studio 中导入一些库
- javascript - d3强制有向图,关注节点双击
- php - 如何在 PHP 中删除文件
- linq - 如何根据嵌套列表项匹配从数据库中选择实体?