我正在尝试在聚合查询中使用$setUnion
,它在MongoDB控制台中工作得很好但是当我尝试在我的Node应用程序中使用Mongoose时,它会因此错误而失败:
{
[MongoError: exception: invalid operator '$setUnion']
name: 'MongoError',
errmsg: 'exception: invalid operator \'$setUnion\'',
code: 15999,
ok: 0
}
以下是我在应用中尝试过但仍然失败的简化查询:
db.users.aggregate(
{
$match: { _id: ObjectId("52c9375c497ed763f41941bd") }
},
{
$project: {
activities: {
$setUnion: [[1,2], [3,4]]
}
}
}
);
任何想法我可能做错了什么?
MongoDB:2.6.6,Mongoose:3.8.21,节点:0.10.26
更新:这是Mongoose代码
var User = require('./providers/db').User,
mongoose = require('mongoose');
User.aggregate({
$match: { _id: mongoose.Types.ObjectId("52c9375c497ed763f41941bd") }
},
{
$project: {
activities: {
$setUnion: [[1,2], [3,4]]
}
}
}, function (err, result) {
if (err) { return console.log(err); }
else { console.log(result); }
});
答案 0 :(得分:0)
真的没有在这里看到这一点并且确实要求你去看它。并且不能说我没有多次警告过你。我相信你要找的那个词是非常感谢你的#34;:
var testSchema = new Schema({},{ "strict": false });
var User = mongoose.model( "User", testSchema, "test" );
mongoose.connect("mongodb://localhost/test");
async.series(
[
function(callback) {
User.remove({},callback);
},
function(callback) {
User.create({ "a": 1 },callback);
},
function(callback) {
User.aggregate(
[
{ "$project": {
"activities": {
"$setUnion": [[1,2],[3,4]]
}
}}
],
function(err,result) {
if (err) throw err;
console.log( result );
process.exit();
}
);
}
],
function(err) {
if (err) throw err;
}
);
并返回:
[ { _id: 54b4c13decda256710226134, activities: [ 1, 4, 3, 2 ] } ]
就像预期的那样。