2016-07-17 6 views
1

私はそれが$setに来るとき、それはこのエラーを生成し、$pushがうまく働いている、同時に$push$setにしようとしている。ここでは、コード

Course.update(
    { 
     _id: req.body.courseId, 
     'files.fileUrl': { $ne: url } 
    },{ 
     $push: { files: { fileUrl: url } }, 
     $set: {'files.$.name': file.name}, 
    }, function(err, count) { 
     if (err) return next(err); 
     console.log("Successfully saved") 
    }); 

MongoError: The positional operator did not find the match needed from the query. Unexpanded update: files.$.name

とORMモデル、私はマングースを使用しています

var CourseSchema = new Schema({ 
    files: [{ 
     fileUrl: String, 
     name: { type: String, default: 'File name'} 
    }] 
}); 

助けが必要ですated。ありがとう。

答えて

1

をエラー状態としては使用されたクエリのようになります。文書がないか、ファイルがない文書を返す[]。

それがエラーをスローする可能性があるためにもう一つの理由は、あなたが同じフィールドfiles$push & $setにしようとし、おそらくhttps://jira.mongodb.org/browse/SERVER-1050

私見と同様の問題に実行している、使用する正当な理由がないということです$push & $setで同じフィールド、代わりにあなたは、単に

$push: { files: { fileUrl: url } }, 
$set: {'files.$.name': file.name}, 

を変更することができます

$push: { files: { fileUrl: url, name: file.name } }, 
+0

だと信じています。 – sinusGob

0

私は相対的なこのシナリオにuはことを願ってい 私のプロジェクトのためのクエリの同種

exports.candidateRating = function(req, res) { 
console.log(req.query); 
console.log(req.body.RoundWiseRatings); 
Profiles.update({ 
    "name": req.query.name 
}, { 
    $set: { 
     "ratings": req.body.ratings, 
    }, 
    $push: { 
     "RoundWiseRatings": req.body.RoundWiseRatings 
    } 
}, { 
    multi: true 
}, function(error, profiles) { 

    if (error) { 

    } 
    return Profiles.find({ 
     name: req.query.name 
    }, function(err, profiless) { 
     console.log(profiless); 
     if (err) { 
      return handleError(res, err); 
     } 
     return res.status(200).json(fnStruncturedData(profiless[0].RoundWiseRatings)); 
    }); 

});}; 

を書かれている、これは私のために働いた:)

+0

返信いただきありがとうございます。私は既にマルチを追加しました。本当ですが、同じエラーが発生しています。私は私のセットが$ set:{'files。$。name':file.name} '、 – sinusGob

関連する問題