use*_*523 5 mongodb mongodb-query
我已经能够在 MongoDB 集合中添加大量空键。由于 MongoDB 中不允许使用空键,因此我很难使用 MongoDB 中的常规方法取消设置键。使用 mongo shell 是否有解决此类问题的方法?
{
"foo": "bar",
"": "I should not exist, I have no key..."
}
Run Code Online (Sandbox Code Playgroud)
我们可以使用批量操作删除空字符串字段。
我们需要迭代游标快照,然后使用bulkWritemethod 方法批量更新文档。请注意,我们需要替换文档,因为我们无法$unset空字段或重命名它。所以这里不可能进行更新操作。
let requests = [];
db.coll.find( { "": { "$exists": true } } ).snapshot().forEach( document => {
delete document[""];
requests.push( {
"replaceOne": {
"filter": { "_id": document._id },
"replacement": document
}
});
if ( requests.length === 1000 ) {
// Execute per 1000 operations and re-init
db.coll.bulkWrite(requests);
requests = [];
}
});
// Clean up queues
if ( requests.length > 0 ) {
db.coll.bulkWrite(requests);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1546 次 |
| 最近记录: |