Node / MongoJS和批量操作

时间:2014-09-23 08:43:17

标签: mongodb mongojs

我有一个MongoDB 2.6数据库。 从mongo shell,我能够按预期执行批量操作,并使用Mongo 1.4.9节点驱动程序:

// 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批量操作吗? 它是否受到支持?我的实施有问题吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

显然,MongoJS驱动程序尚不支持批量更新。 MongoJS v0.15刚刚发布并支持批量更新。上面的例子适用于这个更新的MongoJS驱动程序。