我有以下代码:
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