【发布时间】:2015-03-11 06:17:44
【问题描述】:
我正在尝试在聚合查询中使用 $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); }
});
【问题讨论】:
-
好吧,如果这是您的问题,那么您可以发布产生和错误的猫鼬代码。但我认为你的猫鼬代码在显示时会出现“错字”。
-
你是对的,我的错,我在我的问题中添加了猫鼬代码
-
老兄,这在任何地方都有效。你做错了其他事情。我认为这里对任何人都没有任何好处。您的
{ "$setUnion": [[1,2], [3,4]] }示例对文档检查没有任何积极影响,结果只是[ 1, 4, 3 ,2 ]。你犯了一个编码错误。寻找并纠正它。这行得通。 -
当然这个例子没有任何结果,我简化了它以确保它没有错误。所有代码都在问题中,我找不到任何错误,这就是我首先来到这里的原因......
-
好吧,我认为您在某处犯了明显的语法错误或输入错误。但是既然你强迫我举一个例子来证明你的情况是不正确的,那么我会的。
标签: node.js mongodb mongoose mongodb-query aggregation-framework