{用户名:’我’,公司:{“您的公司”:{…}}
我想在用户记录(用户集合)中插入公司,以便:
{username:’me’,companies:{“ yourcompany”:{…},“ mycompany”:{…}}
但是这个名字是动态的。
var companyid = "mycompany"; .collection('users').findAndModify( {username: usern}, [['_id', 'asc']], {$set:{companies:{companyid: { desksmemberships:[] }}}}, {new: true}, function(){...}
为此。.{username:’me’,companies:{“ yourcompany”:{…},“ companyid”:{…}}
我该怎么做呢?
您必须以$set编程方式构建修改器:
$set
var modifier = { $set: {} }; modifier.$set['companies.' + companyid] = { desksmemberships:[] };
然后modifier用作findAndModify调用中的第三个参数。
modifier
findAndModify
您可能还需要考虑更改companies为数组而不是嵌入式对象。
companies
Node.js 4.x更新
现在,您可以使用计算属性语法直接在对象文字中执行此操作:
collection('users').findAndModify( {username: usern}, [['_id', 'asc']], {$set:{['companies.' + companyid]: { desksmemberships:[] }}}, {new: true}, function(){...});