javascript - 如何在mongo查询中动态使用$push

标签 javascript mongodb meteor

我有一个具有以下格式的文档:

{ 
"Students" : {
    "Week1" : {
        "Monday" : [

        ], 
        "Tuesday" : [

        ], 
        "Wednesday" : [

        ], 
        "Thursday" : [

        ], 
        "Friday" : [

        ], 
        "Saturday" : [

        ], 
        "Sunday" : [

        ]
    }, 
    "Week2" : {
        "Sunday" : [

        ], 
        "Monday" : [

        ], 
        "Tuesday" : [

        ], 
        "Wednesday" : [

        ], 
        "Thursday" : [

        ], 
        "Friday" : [

        ], 
        "Saturday" : [

        ]
    }, 
    "Week3" : {
        "Sunday" : [

        ], 
        "Monday" : [

        ], 
        "Tuesday" : [

        ], 
        "Wednesday" : [

        ], 
        "Thursday" : [

        ], 
        "Friday" : [

        ], 
        "Saturday" : [

        ]
    }, 
    "Week4" : {
        "Sunday" : [

        ], 
        "Monday" : [

        ], 
        "Tuesday" : [

        ], 
        "Wednesday" : [

        ], 
        "Thursday" : [

        ], 
        "Friday" : [

        ], 
        "Saturday" : [

        ]
    }, 
    "Week5" : {
        "Sunday" : [

        ], 
        "Monday" : [

        ], 
        "Tuesday" : [

        ], 
        "Wednesday" : [

        ], 
        "Thursday" : [

        ], 
        "Friday" : [

        ], 
        "Saturday" : [

        ]
    }
  }
}

我想使用 Week1 作为变量动态地将一些元素推送到 Students.Week1.Monday 中。所以我想像这样构建它:

var dbNames = ['Zoe', 'Billy', 'Joey'];
var week = Week1; // week is dynamic entry
var query1 = {};
query1['Students.' + week + '.Monday'] = '$in: ' + dbNames;
Programs.update({ _id: teacherid }, { $push: query1 });

我把事情搞砸了。任何帮助表示赞赏。

最佳答案

您可以动态创建对象来解决问题

var query = {};
var week = "DYNAMIC_VAL"; // Replace this
var day = "Monday";  // Dynamic Day
var dbNames = ['Zoe', 'Billy', 'Joey'];
query['Students'] = {};
query['Students'][week] = {};

// query['Students'][week][day] = { '$in': dBNames } // As per your query.
// but it should not work,
// if you want to push all elements of dbNames then you can use $each instead of $in

query['Students'][week][day] = { '$each': dBNames };


//console.log(JSON.stringify(query, null, 2));

Programs.update({ _id: teacherid }, { $push: query }, callback);

关于javascript - 如何在mongo查询中动态使用$push,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44189549/

相关文章:

javascript - JQuery 从 onclick 函数中检索数据属性

javascript - 获取由 - 符号分隔的字符串的前两个部分

node.js - Wire 版本不支持 mongodb 中的 nodejs

MongoDB 事务和索引

javascript - React js主组件中的身份验证

javascript - @SpringBootApplication 不加载静态文件

javascript - 使用 string.replace() 替换同一单词的差异变体

mongodb - $group by 8 条记录并进行聚合

meteor 模板,它来自哪里?

javascript - Meteor 新手询问最佳实践