当我这样做时:

return scores.updateQ({_id:score._id},
{
    $set:{"partId":partId,"activityId":activityId},
    $unset:{topicType:'',topicId:'',courseId:''}
},
{strict:false})

其中 partIdactivityId 是变量,在别处定义,

我得到
{ name: 'MongoError',
  message: 'unknown top level operator: $set',
  index: 0,
  code: 2,
  errmsg: 'unknown top level operator: $set' }

这个 answer



但是 the documentation 说你可以按照我的方式去做

那么也许还有其他问题?

最佳答案

问题是您使用了错误的 update method 语法。您应该使用 this method's 语法,假设 scores 是一个文档。

return scores.updateQ({
    $set: { "partId": partId, "activityId": activityId},
    $unset: { topicType: '', topicId: '', courseId: ''}
},
{ strict: false });

此外,在 Mongoose 中,它默认使用 $set,所以这应该是等效的:
return scores.updateQ({
    partId: partId,
    activityId: activityId,
    $unset: { topicType: '', topicId: '', courseId: ''}
},
{ strict: false });

编辑:

我的假设是 scores 是一个文档(模型的一个实例):
var schema = new Schema({});
var Scores = mongoose.model('Scores', schema);
var scores = new Scores({});
Scores.updatescores.update 都存在,但语法不同,这可能是导致您出错的原因。这是区别:
// Generic update
Scores.update({ _id: id }, { prop: 'value' }, callback);

// Designed to update scores specifically
scores.update({ prop: 'value' }, callback);

笔记:

如果这些假设不正确,请在您的答案中包含更多上下文,例如您是如何到达那里的。

关于mongodb - MongoError 未知顶级运算符 : $set,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31620222/

10-12 16:03