gpt4 book ai didi

node.js - 串行迭代mongodb游标

转载 作者:太空宇宙 更新时间:2023-11-03 22:38:15 27 4
gpt4 key购买 nike

我正在迭代一个集合,对于每个文档,我从 scores 数组中删除 score 最低的元素。

MongoClient.connect('mongodb://localhost:27017/school', function(err, db) {
if(err) throw err;

//var query = { 'assignment' : 'hw1' };
//var operator = { '$set' : { 'date_returned' : new Date() } };

var students = db.collection('students');
var updateDoc = function(document){
"use strict"
console.log('update called');
db.collection('students').save(document,function(error,updatedDocument){
if(error){
console.log(error);
throw error;
}
console.dir('successfully updated document: '+updatedDocument);
});
}
var cursor = students.find({});
cursor.each(function(error,doc){
"use strict"
if(err) throw err;
if(doc==null){
return;
}
doc.scores.sort(function(a,b){
return a.score-b.score;
});
doc.scores.splice(0,1);
updateDoc(doc);

});
});

一些文档已更新,但我在某些时候遇到这样的错误。

{ [MongoError: E11000 duplicate key error index: school.students.$_id_  dup key:
{ : 0 }]
name: 'MongoError',
err: 'E11000 duplicate key error index: school.students.$_id_ dup key: { : 0
}'.......

我可以理解我在数据库上的异步操作方面做了一些错误,但我无法找出确切的原因。

帮助将不胜感激。谢谢

编辑:文档样本

{ _id: 198,
name: 'Timothy Harrod',
scores:
[
{ type: 'exam', score: 11.9075674046519 },
{ type: 'quiz', score: 20.51879961777022 },
{ type: 'homework', score: 55.85952928204192 },
{ type: 'homework', score: 64.85650354990375 }
]
}

最佳答案

this answer中的方法(https://stackoverflow.com/a/18119789/1011042)解决了我的问题。但如果有人能用我原来的方法解释这个问题,那就太好了。

关于node.js - 串行迭代mongodb游标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19907160/

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