2016-09-22 2 views
0

mongodb 데이터베이스에 삽입하려는/r/n 종료 데이터 스트림이 수신됩니다.내 mongodb 코드가 모든 데이터를 삽입하지 않습니다.

tag~4~keyword~sim 
tag~5~keyword~mib 
tag~4~keyword~gom 
tag~3~keyword~qbo 
tag~6~keyword~qqq 
tag~3~keyword~k94 
tag~4~keyword~g93 

내가 arr.split (~)를 사용하여 분리 한 그래서 첫 번째 줄로 표현 될 배열 표현을 얻을 것이다은 다음과 같습니다

arr[0] refers to tag 
arr[1] refers to 4 
arr[2] refers to keyword 
arr[3] refers to sim 

내가 그들을 삽입 할 이 표현과 MongoDB를 등록 현황 :

{ 
    tag: 4, 
    keywords: [{ keyword: "sim" }, { keyword: "gom" }, { keyword: "g93"} ] 
} 

다음 내 nodejs/몽고 클라이언트의 요점은 (네이티브) 코드를 사용하여 비동기가 될 때 :

i. 태그가 있는지 콜렉션 ('dat')을 확인하십시오.
ii. 태그가 없으면 문서를 만들고 태그 번호를 삽입하십시오
iii. 다음으로 키워드Obj를 삽입하십시오.

var newTagNumber = parseInt(arr[1]) 
var keywordObj = { keyword: arr[3] }  
async.waterfall([ 
    function(callback) { 
    db.collection('dat') 
      .find({ tag: newTagNumber }, 
      { forceServerObjectId: true}).toArray((err, result) => { 
       db.collection('dat').createIndex({ tag: 1 }, { unique: true }) 
     if (err) return callback(err) 
     if (!result.length) return callback(null, false) 
    }) 
}, 
function(arg1, callback) { 
    if (!arg1) { 
    db.collection('dat') 
      .insertOne({ tag: newTagNumber }, 
       { forceServerObjectId: true }, (err, result2) => { 
     if (err) return callback(err) 
    }) 
    } // end if 

    // insert keyword object into the correct tag 
    db.collection('dat') 
      .updateOne({ tag: newTagNumber }, 
      { $push : { keywords: keywordObj }}, 
      { forceServerObjectId: true }, (err, result3) => { 
      if (err) return callback(err) 
      }) 
    }], 
function(err) { 
    if (err) { 
    if (err.message) { 
     return console.log(err.message) 
    } 
    return console.log(err) 
    } 
}) 

태그 4를 예로 들어 키워드 배열에 3 개의 keywordObj 삽입이 있어야합니다. 그러나, 나는 단지 2를 얻고있다.

어디서 잘못되었는지 모르겠습니다. 콜백 때문일 수 있습니까?

+0

으로 모든 async.waterfall 코드를 대체 - http://stackoverflow.com/questions/17637274/mongodb-doesnt-save-all-data – extensa5620

답변

0

알아서 관리하기!

내가이 내가 가지고있는 문제라고 생각

db.collection('dat') 
    .updateOne({ tag: newTagNumber }, 
      { $push : { keywords: keywordObj }}, 
      { upsert: true }) 
    .then((result) => { 
    console.log('result is ' + result) 
    } 
관련 문제