[英]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.