我需要200智商!! :)
我有一个这样的架构:
http_auth = (kibana_username, kibana_password)
...
我想更新名称,重复,tst ...
我的要求是:
var ProgramSchema = new mongoose.Schema({
name: { type: String, required: true, unique: true },
day1: {
phase1: {
exercise1: {
name: { type: String },
repetition: { type: String },
tst: { type: String },
tdrp: { type: String },
method: { type: String },
weightKilo: { type: String },
},
我们可以使用[req.body.key]:来自req.body的更新密钥的值。 我们可以使用“ key1.key2.key3”更新子文档:值 但是我不知道如何用req.body中的许多键更新子文档。
我上次测试:(:
{
userId: '5f9894d8a987136735f4c62e',
programId: '5fad83103c8b262bd9cdaa10',
day: 'day1',
phase: 'phase1',
exercise: 'exercise1',
exerciseName: 'Test',
repetition: '3x15',
tst: '1',
tdrp: '1',
method: 'Test',
weightKilo: '32'
}
我需要帮助:')亲爱的家伙!
答案 0 :(得分:0)
您可以这样创建自己的查询对象:
var name = req.body.day+"."+req.body.phase+"."+req.body.exercise+".name"
var query = {}
query[name] = req.body.exerciseName
然后使用此更新:
var update = await model.updateOne({"id": req.body.programId},{$set:query})
这是一个如何处理一个字段的示例,其余字段应采用相同的方式。
编辑说我已经测试过并且可以正常工作:
// Initialize keys names
var name = req.body.day+"."+req.body.phase+"."+req.body.exercise+".name"
var repetition = req.body.day+"."+req.body.phase+"."+req.body.exercise+".repetition";
var tst = req.body.day+"."+req.body.phase+"."+req.body.exercise+".tst";
var tdrp = req.body.day+"."+req.body.phase+"."+req.body.exercise+".tdrp";
var method = req.body.day+"."+req.body.phase+"."+req.body.exercise+".method";
var weightKilo = req.body.day+"."+req.body.phase+"."+req.body.exercise+".weightKilo";
// Add keys with values to the query
var query = {}
query[name] = req.body.exerciseName
query[repetition] = req.body.repetition
query[tst] = req.body.tst
query[tdrp] = req.body.tdrp
query[method] = req.body.method
query[weightKilo] = req.body.weightKilo
// Do the query
var update = await model.updateOne({_id:req.body.programId},{$set:query})