簡體   English   中英

在Node.JS中使用和尚將多個文檔(批量插入)插入到mongoDB集合中時出現問題?

[英]Issue in inserting multiple documents (Bulk Insert) into a mongoDB collection using monk in Node.JS?

我試圖將多個文檔插入到mongoDB數據庫的集合中,但是僅獲得一個對象ID作為響應(在數據庫中創建了多個文檔)。

碼:

exports.createRelation = function(relationDoc, db, callback) {
var relations = db.get("relations");
relations
        .insert( relationDoc )
    .error( function ( err ) {
        callback(err, null);
    })
    .success( function ( doc ){
        callback(null, doc);
   });
};

在這種情況下,relationDoc將是一個數組

輸入:

newRelDocs_Array:  [ { 
    path: [ 53d0b191c5ac61d403b0090d ] 
    tob: 1405343247 },
  { 
    path: [ 53d0b191c5ac61d403b0090d ],
    tob: 1405343247 } ]

回應:

createRelation(): Success
createRelation_db:  { 
  _id: 546a1d6f65c05d1c37660c4c,
  tob: 1405343247

}

僅供參考,我正在使用NodeJS,並通過和尚連接到MongoDB。

在您的問題中,您說realationDoc是一個數組,我認為它看起來像這樣:

realationDoc = [{
  id: 1,
  relation: 2
 },{
  id: 2, relation: 1
 }];

在僧侶中,插入功能不具備MonogoDB 2.4內置功能“批量插入”功能。 參見http://docs.mongodb.org/manual/reference/method/Bulk.insert/

按照您的代碼原樣,您將創建一個包含2個字段的單個文檔的集合,其中1個是自動生成的_id,第二個字段是您的數組。

要執行您想做的事情,您將需要像這樣修改代碼:

for(var i = 0; i<relationDoc.length;i++){
  relations.insert(relationDoc[i])
  //..add promise code for success and error stuff
}

效率可能不如本機驅動程序中提供的“批量插入”,但應該可以帶您到需要和尚的地方。

僧侶集合包裝器通過.col字段提供對基礎集合對象的訪問。 您可以使用它來訪問Monk尚未實現的方法,例如批量插入和聚合:

var relations = db.get("relations");
var docs = [ { 
              path: [ "53d0b191c5ac61d403b0090d" ],
              tob: 1405343247
             }, {
              path: [ "53d0b191c5ac61d403b0090d" ],
              tob: 1405343247
             } ];
relations.col.insert(docs, callback);

請注意,使用.col您將無法使用和尚提供的promises功能。 看到這里更多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM