sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoError okänd toppnivåoperatör:$set

Problemet är att du använder syntaxen för fel uppdateringsmetod . Du bör använda denna metod syntax, förutsatt att scores är ett dokument.

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

I Mongoose använder den också $set som standard, så detta bör vara likvärdigt:

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

EDIT:

Mitt antagande är att scores är ett dokument (en instans av modellen):

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

Båda Scores.update och scores.update existerar, men syntaxen är annorlunda, vilket kan vara orsaken till ditt fel. Här är skillnaden:

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

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

OBS:

Om dessa antaganden inte är korrekta, inkludera mer sammanhang i ditt svar, som hur du kom dit.




  1. BadYieldError vid användning av find() Motor [MongoDB + Tornado]

  2. Noggrannhet för redis dbsize-kommandot

  3. Inkrementellt fält till befintlig samling

  4. PyMongo max_time_ms