我安装了 2.5.5,以便我可以尝试新的“$out”运算符来创建具有聚合结果的新集合。我的 Node 适配器是 mongodb@1.3.23。我的代码中没有“allowDiskUsage”,但出现此错误:
Uncaught MongoError: unrecognized field 'allowDiskUsage'
我需要做什么才能更新我的项目以运行 2.5.5?
最佳答案
通过对同一驱动程序版本的简单测试,我没有看到相同的结果:
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost/test', function(err, db) {
if (!err) {
db.collection('data', function(err, collection) {
if (!err) {
collection.aggregate([
{$out: "another" },
],function(err, result) {
if (err) {
console.log(err);
}
db.close();
});
}
});
}
});
allowDiskUse
有一个选项,可以传递给 aggregate 的 runCommand
调用,但这并不会直接影响 $out管道运算符,因为它的目的是允许阶段使用磁盘存储而不是单独的内存。正如您所知,$out 的用法是将结果放入输出集合中,而不是返回游标对象。
如果自身使用的相同代码导致相同的问题,您应该检查您安装的驱动程序版本。从 1.3.23 开始,使用 MongoDB 2.5.5 服务器,此代码可以按预期工作。
如果此代码通过,则项目中可能存在某些调用或重写模块正在实现您在错误中指定的选项。
关于javascript - 未捕获的 MongoError : unrecognized field 'allowDiskUsage' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21800844/