{username:'me',公司:{“yourcompany”:{...}}
我想将公司插入用户记录(用户集合),以便:
{username:'me',公司:{“yourcompany”:{...},“mycompany”:{...}}
但名字很动态..
var companyid = "mycompany";
.collection('users').findAndModify(
{username: usern},
[['_id', 'asc']],
{$set:{companies:{companyid: { desksmemberships:[] }}}},
{new: true}, function(){...}
给予此.. {用户名:'我',公司:{“yourcompany”:{...},“companyid”:{...}}
我该怎么做?
答案 0 :(得分:6)
您必须以编程方式构建$set
修饰符:
var modifier = { $set: {} };
modifier.$set['companies.' + companyid] = { desksmemberships:[] };
然后使用modifier
作为findAndModify
来电的第三个参数。
您可能还需要考虑将companies
更改为数组而不是嵌入对象。
Node.js 4.x更新
您现在可以使用computed property语法直接在对象文字中执行此操作:
collection('users').findAndModify(
{username: usern},
[['_id', 'asc']],
{$set:{['companies.' + companyid]: { desksmemberships:[] }}},
{new: true},
function(){...});
答案 1 :(得分:0)
我在很多帖子上看过这个问题,其中一些很复杂 - 叫我疯了,但你可以这样做(node + mongo):
我的数据库架构'匹配'设置为数组。在mongo数据[match.matchId]变为' 2028856183'。
db.update({key: value}, {matches: [{[match.matchId] : match}] }, callback);
db.update(what to find, what to change it to, what to do next)
您可以使用括号中的任何变量。