首页 新闻 会员 周边 捐助

mongodb 分页处理数据 怎么写脚本执行

0
[已解决问题] 解决于 2021-06-02 20:43

mongodb 分页处理数据 怎么写脚本 进行分页呀 谢谢

怎么写脚本执行

脚本如下 :

db.getCollection('test').find({}).forEach( item =>{
if (item.widget.fieldId) {
var filed = db.getCollection('field').findOne({_id:item.widget.fieldId})
if(filed){
item.widget.fieldName = filed.name
}

db.getCollection('test').save(item)

}
})

谢谢

一支会记忆的笔的主页 一支会记忆的笔 | 菜鸟二级 | 园豆:280
提问于:2021-05-27 16:51
< >
分享
最佳答案
0

limit(2000) 每次执行2000条数据
skip(0) 从零条开始

db.getCollection('test').find({}).skip(0).limit(2000).forEach( item =>{
if (item.widget.fieldId) {
var filed = db.getCollection('field').findOne({_id:item.widget.fieldId})
if(filed){
item.widget.fieldName = filed.name
}

下一次就是:
db.getCollection('test').find({}).skip(2000).limit(2000)

一支会记忆的笔 | 菜鸟二级 |园豆:280 | 2021-06-02 20:43

但随着数量越大 skip执行效率越低 所以使用下面:

//5千到更多====

var data = db.getCollection('test').find().sort({"_id":1}).limit(5000);
var latest = null;
while (data.hasNext()){
latest = data.next()

}
//db.getCollection('test').find({"_id":{"$gt":latest._id}}).sort({"_id":1}).limit(1000)

db.getCollection('test').find({"_id":{"$gt":latest._id}}).sort({"_id":1}).limit(10000).forEach( item =>{
if (item.widget.fieldId) {
var filed = db.getCollection('fieldQuery').findOne({_id:item.widget.fieldId})
if(filed){
item.widget.fieldName = filed.name
}

db.getCollection('test').save(item)

}
})

//0 到5千内====
db.getCollection('test').find().sort({"_id":1}).limit(5000).forEach( item =>{
if (item.widget.fieldId) {
var filed = db.getCollection('fieldQuery').findOne({_id:item.widget.fieldId})
if(filed){
item.widget.fieldName = filed.name
}

db.getCollection('test').save(item)

}
})

一支会记忆的笔 | 园豆:280 (菜鸟二级) | 2021-06-10 09:28
其他回答(1)
0

skip take

不知道风往哪儿吹 | 园豆:2037 (老鸟四级) | 2021-05-28 10:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册