我正在从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存储在两个集合中以进行链接。没有明显的错误,但它似乎一直都会出现问题。我似乎也没有点击('关闭')功能。
答案 0 :(得分:0)
好的,所以反过来思考这个问题就更简单了。
select
oitm.itemcode as 'Asset No',
oitm.itemname as 'Asset Description',
oitm.assetSerNo as 'Serial No'
from oitm x
WHERE
EXISTS(
select TOP 1 1
from oitm y
inner join rdn1 z on y.assetserno = z.serialnum
WHERE
y.itemtype = 'F'
and y.asststatus = 'A'
and y.assetSerNo = x.assetSerNo
HAVING count(y.assetserno)>count(z.serialnum)
)
减少操作,减少麻烦。