gpt4 book ai didi

mysql - 更可靠的循环来更新 Mongodb 中的 ObjectID?

转载 作者:行者123 更新时间:2023-11-29 21:46:24 26 4
gpt4 key购买 nike

我正在从 SQL 迁移到 NOSQL,但仍然希望维护单独的记录并在某些情况下使用 ObjectID 进行链接。我有这个循环,它可以部分工作。

router.get('/col', function(req, res, next) {
var stream = Record.find().stream();

stream.on('data', function (doc) {
if(doc.oldcolid){
Collection.findOne({da: doc.oldcolid}, function(err, col){
doc.collectionId = col._id
doc.save()
console.log(col.name)
})
}


})

stream.on('error', function (err) {
console.log(err)
})

stream.on('close', function () {
console.log("done")
})

});

然而,它似乎完成并错过了很多记录。

> db.records.count({collectionId: null})
12130
> db.records.count({collectionId: {$exists: true}})
5882
> db.records.count({oldcolid: {$exists: true}})
18012

我将 MySQL 数据库中的旧 ID 存储在两个集合中以进行链接。没有明显的错误,但它似乎总是会摔倒。我似乎也没有点击 on('close') 函数。

最佳答案

好的,所以逆向思考这个问题会更简单。

var stream = Collection.find().stream();
stream.on('data', function (doc) {
console.log(doc.da)
stream.pause()
Record.update({oldcolid: doc.da}, {collectionId: doc._id}, { multi: true }, function (err, raw) {

if(err) {console.log(err)}
console.log(raw)
stream.resume()
})



})

stream.on('error', function (err) {
console.log(err)
})

stream.on('close', function () {
console.log("done")
})

更少的操作,更少的麻烦。

关于mysql - 更可靠的循环来更新 Mongodb 中的 ObjectID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34075015/

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