我的收藏中只有一个文件:
{
"_id":ObjectID("...."),
"Last, First" : {
"Mon 8/28":"10:15-9:00p",
"Wed 8/31":"9:00a-12:00p"
},
...
}
我从前端的AJAX调用
接收这些变量var name = "Last, First";
var date = "Wed 8/31";
var newTime = "10:00p-3:00a";
我正在尝试使用Express.js中的MongoJS来调用新时间来更新文档,但是我遇到了麻烦(堆栈的新功能)。我尝试使用:
collection.update({}, {$set: {name.date : newTime}});
但我无法正确更新它。我想这样做,以便嵌入文档更新来自通话的新时间。谢谢!
答案 0 :(得分:3)
你需要在JavaScript中构建密钥作为任何东西"左侧"或"关键方"总是字面上解释为字符串。但是有一个简单的语法可以遵循:
var name = "Last, First";
var date = "Wed 8/31";
var newTime = "10:00p-3:00a";
var update = { "$set": {} };
update.$set[name + "." + date] = newTime;
collection.update({}, update);
因此,变量update
现在使用"点符号"来构造复合字符串。来自每个变量部分。括号[]
表示法允许在引用对象时构造键名,但当然必须先将较高级$set
键设置为某个键,否则这将是分配时的错误。