gpt4 book ai didi

mongodb - 删除大小大于特定值的文档

转载 作者:行者123 更新时间:2023-12-04 13:28:41 27 4
gpt4 key购买 nike

我有一个包含多个文档的集合,其大小已从 16MB 增加或即将达到 16MB。
我想要查找大小大于 10MB 的文档并删除所有文档的查询。
我正在使用以下内容来查找文档的大小。

Object.bsonsize(db.test.findOne({type:"auto"}))
有没有办法在 db.test.deleteMany() 中嵌入这个查询询问?

最佳答案

以下查询删除大小大于指定大小(大小以字节为单位)的文档。此查询对 MongoDB v4.4 或更高版本有效。

db.collection.deleteMany( { 
$expr: { $gt: [ { $bsonSize: "$$ROOT" }, SIZE_LIMIT ] },
type: "auto"
} )

以下脚本针对 MongoDB v4.2 或更早版本运行:
const SIZE_LIMIT = 75 // substitute your value here in bytes
let idsToDelete = [ ]
let crsr = db.collection.find()

while(crsr.hasNext()) {
let doc= crsr.next()
if (Object.bsonsize(doc) > SIZE_LIMIT) {
idsToDelete.push(doc._id)
}
}

db.collection.deleteMany( { _id: { $in: idsToDelete } } )

关于mongodb - 删除大小大于特定值的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66561742/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com