MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoError opérateur de niveau supérieur inconnu :$set

Le problème est que vous utilisez la syntaxe pour la mauvaise méthode de mise à jour . Vous devriez utiliser cette méthode syntaxe, en supposant que scores est un document.

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

De plus, dans Mongoose, il utilise $set par défaut, cela devrait donc être équivalent :

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

MODIFIER :

Mon hypothèse est que scores est un document (une instance du Modèle) :

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

Les deux Scores.update et scores.update existent, mais la syntaxe est différente, ce qui peut être la cause de votre erreur. Voici la différence :

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

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

REMARQUE :

Si ces hypothèses ne sont pas correctes, incluez plus de contexte dans votre réponse, comme comment vous y êtes arrivé.