node.js – 参数必须是nodejs中的字符串

我有以下代码

var objectid = infos[i].id;
              var name = infos[i].name;
              return collection.aggregate([
                {$match: {app: new ObjectId(objectid)}},{$group: {_id: "$uid",amt: {$sum: 1}}}
              ])

以前这段代码工作正常,但最近我开始在sails中获得以下stacktrace:

error: TypeError: Argument must be a string
    at TypeError (native)
    at Buffer.write (buffer.js:791:21)
    at serializeObjectId (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/parser/serializer.js:242:10)
    at serializeInto (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/parser/serializer.js:699:17)
    at serializeObject (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/parser/serializer.js:280:18)
    at serializeInto (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/parser/serializer.js:705:17)
    at serializeObject (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/parser/serializer.js:280:18)
    at serializeInto (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/parser/serializer.js:551:17)
    at serializeObject (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/parser/serializer.js:280:18)
    at serializeInto (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/parser/serializer.js:705:17)
    at serialize (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/bson.js:47:27)

它是抱怨因为我导入的ObjectId如下:

var ObjectId = require('mongodb').ObjectID;

正如我之前所说,这个工作正常但不再适用.我真的很困惑.如果我将objectId作为字符串,它将不会返回任何结果.如果我保持原样(因为它之前工作)它会抛出异常.这是什么问题?

我看过以下内容

https://docs.mongodb.com/v3.0/reference/operator/aggregation/cmp/#exp._S_cmp

我能够在robomongo做到这一点:

db.getCollection("openevent").aggregate([
                {$match: {app: new ObjectId(OBJECT_ID) }},amt: {$sum: 1}}}
              ])

使用与上面相同的值.我究竟做错了什么??

sails-mongo我看到以下内容

└─┬ sails-mongo@0.12.1
  └─┬ mongodb@2.1.6
    └── mongodb-core@1.3.1

解决方法

为了后人的缘故,这通常是由于mongo版本之间的兼容性问题. MongoDB驱动程序2.2使用mongodb-core 2.0(和bson 0.5),而MongoDB驱动程序2.1使用mongodb-core 1.3和bson 0.4.如果您尝试使用带有MongoDB驱动程序2.2的MongoDB驱动程序2.1 ObjectId,您将收到此错误.

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...