参数必须是nodejs中的string

我有以下代码:

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中获得下面的堆栈跟踪:

 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作为一个string,它不会返回任何结果。 如果我按照原样(如以前那样)离开它,则会抛出exception。 这里有什么问题?

我已阅读下面:

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

我能在robomongo做到这一点:

  db.getCollection("openevent").aggregate([ {$match: {app: new ObjectId(OBJECT_ID) }}, {$group: {_id: "$uid", 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.1 ObjectId和MongoDB驱动程序2.2,则会出现此错误。

我不知道为什么这是一个答案,但我会张贴它。

以前我有这样的:

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

我改变了这个:

 var ObjectId = require('sails-mongo/node_modules/mongodb').ObjectID; 

不知何故,所有的差异。