我有一个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驱动程序,我找不到任何与批量操作相关的内容。我觉得这很奇怪,因为散装作业从五月左右就开始了。
有人能告诉我如何使用MongoJS驱动程序执行Mongo批量操作吗?它是支持的吗?我的执行有什么问题吗?
谢谢!
发布于 2014-10-05 16:34:39
显然,这个MongoJS驱动程序还不支持批量更新。MongoJS v0.15刚刚发布,支持批量更新。上面的示例在此更新的MongoJS驱动程序中运行良好。
https://stackoverflow.com/questions/25990630
复制相似问题