MongoError 未知顶级运算符:$set

2023-12-08

当我这样做时:

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

Where partId and activityId是在别处定义的变量,

I get

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

This answer says

““未知的顶级操作员”消息意味着该操作员已 出现在其适用的字段之后。”

But 文档说你可以像我一样做

那么也许还有其他问题?


问题是你使用了错误的语法更新方法。你应该使用这个方法的语法,假设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 });

EDIT:

我的假设是scores是一个文档(模型的一个实例):

var schema = new Schema({});
var Scores = mongoose.model('Scores', schema);
var scores = new Scores({});

Both Scores.update and scores.update存在,但语法不同,这可能是导致错误的原因。区别如下:

// Generic update
Scores.update({ _id: id }, { prop: 'value' }, callback);

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

NOTE:

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MongoError 未知顶级运算符:$set 的相关文章

随机推荐