2014-09-23 67 views
1

我有一個MongoDB 2.6數據庫。 從蒙戈外殼,我能夠按照預期進行批量操作,並使用蒙戈1.4.9節驅動器,以及:節點/ MongoJS和批量操作

// bulktest-mongodb.js: works fine 
var Db = require('mongodb').Db; 
var Server = require('mongodb').Server; 
var db = new Db('MyDB', new Server('localhost', 27017)); 

db.open(function(err, db) { 
    var col = db.collection("MyCollection"); 

    var bulk = col.initializeUnorderedBulkOp(); 
    bulk.find({ _id: 1 }).update({ $inc: { bulk: 1 }}); 
    bulk.find({ _id: 2 }).update({ $inc: { bulk: 2 }}); 
    bulk.execute(function(err, result) { 
     console.log("RESULT: "+JSON.stringify(result)); 
    }); 
}); 

RESULT: {"ok":1, ...} 

然而,在我的項目,我使用MongoJS 0.14.1,這似乎成爲MongoDB 1.4.9節點驅動程序的包裝器。如果我嘗試使用這個MongoJS包裝做同樣的,我得到:

// bulktest-mongojs.js: does not work??? 
var mongojs = require("mongojs"); 
var db = mongojs.connect("mongodb://localhost/MyDB"); 
var col = db.collection("MyCollection"); 

var bulk = col.initializeUnorderedBulkOp(); 
bulk.find({ _id: 1}).update({ $inc: { bulk: 1}}); 
bulk.find({ _id: 2}).update({ $inc: { bulk: 2}}); 
bulk.execute(function(err, result) { 
    console.log("RESULT: "+JSON.stringify(result)); 
}); 

> node ./bulktest-mongojs.js 
... 
var bulk = col.initializeUnorderedBulkOp(); 
      ^
TypeError: Object MyDB.MyCollection has no method 'initializeUnorderedBulkOp' 

顯然,方法不是由包裝曝光,而它是存在於驅動程序。在MongoJS文檔和Google搜索中,我找不到與MongoJS驅動程序結合使用批量操作相關的任何內容。我覺得這很好奇,因爲從5月份左右開始散貨業務就已經開始了。

有人可以告訴我如何使用MongoJS驅動程序執行Mongo批量操作嗎? 它是否支持?我的執行有問題嗎?

謝謝!

回答

0

這個MongoJS驅動程序顯然不支持批量更新。 MongoJS v0.15剛剛發佈並支持批量更新。上面的例子用這個更新的MongoJS驅動程序正常工作。