Details
-
Bug
-
Resolution: Done
-
Major - P3
-
None
-
2.1.2
-
None
-
node.js 0.6 and 0.8, mongodb 2.1.2 x64, osx 10.7 lion
-
ALL
Description
The error is
{ [MongoError: exception: wrong type for field (pipeline) 3 != 4]
|
name: 'MongoError',
|
errmsg: 'exception: wrong type for field (pipeline) 3 != 4',
|
code: 13111,
|
ok: 0 }
|
The document and aggregation pipeline is below
exports.shouldCorrectlyExecuteSimpleAggregationPipelineUsingArguments = function(test) {
|
var db = new Db('integration_tests', new Server("127.0.0.1", 27017,
|
{auto_reconnect: false, poolSize: 4, ssl:useSSL}), {native_parser: native_parser});
|
|
|
// Establish connection to db
|
db.open(function(err, db) {
|
// Some docs for insertion
|
var docs = [{
|
title : "this is my title", author : "bob", posted : new Date() ,
|
pageViews : 5, tags : [ "fun" , "good" , "fun" ], other : { foo : 5 },
|
comments : [
|
{ author :"joe", text : "this is cool" }, { author :"sam", text : "this is bad" }
|
]}];
|
|
// Validate that we are running on at least version 2.1 of MongoDB
|
db.admin().serverInfo(function(err, result){
|
|
|
if(parseInt((result.version.replace(/\./g, ''))) >= 210) {
|
// Create a collection
|
client.createCollection('shouldCorrectlyExecuteSimpleAggregationPipelineUsingArguments', function(err, collection) {
|
// Insert the docs
|
collection.insert(docs, {safe:true}, function(err, result) {
|
|
// Execute aggregate, notice the pipeline is expressed as function call parameters
|
// instead of an Array.
|
collection.aggregate(
|
{ $project : {
|
author : 1,
|
tags : 1,
|
}},
|
{ $unwind : "$tags" },
|
{ $group : {
|
_id : { tags : 1 },
|
authors : { $addToSet : "$author" }
|
}}
|
, function(err, result) {
|
console.log("===============================================================")
|
console.dir(err)
|
console.dir(result)
|
|
// test.equal(null, err);
|
// test.equal('good', result[0]._id.tags);
|
// test.deepEqual(['bob'], result[0].authors);
|
// test.equal('fun', result[1]._id.tags);
|
// test.deepEqual(['bob'], result[1].authors);
|
|
db.close();
|
test.done();
|
});
|
});
|
});
|
} else {
|
db.close();
|
test.done();
|
}
|
});
|
});
|
}
|