mongodb - MongoError 未知顶级运算符 : $set

标签 mongodb mongoose

当我这样做时:

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 "unknown top level operator" message means that the operator has to appear after the field to which it applies."

但是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/

相关文章:

javascript - 如何在 mongoose 中使用 $set 动态更新嵌入式文档

javascript - Axios Post 登录请求显示待处理状态?

javascript - 在 Virtualbox 托管的 Ubuntu 中通过 Robomongo 访问 mongodb

mongodb - 重启后 Dokku 启动 Mongo

javascript - 如何在客户端展示海量报表数据(mongoDB、JS)

mongodb - 在 MongoDB 中,将帖子的所有评论保存在一个文档中是否可行?

java - 更新嵌套文档归档并在 mongodb 中递增

javascript - MongoDB:更新集合中的数组项不起作用

node.js - 这个查询在 nosql 中是否可行(使用 mongodb)?

node.js - Mongoose findOneAndUpdate 更新多个字段