Nodejs Mongo插入子文档 - 动态字段名

Joh*_*ams 3 mongodb node.js mongoskin

{username:'me',公司:{"yourcompany":{...}}

我想将公司插入用户记录(用户集合),以便:

{username:'me',公司:{"yourcompany":{...},"mycompany":{...}}

但这个名字很动态..

var companyid = "mycompany";

.collection('users').findAndModify(
{username: usern}, 
[['_id', 'asc']], 
{$set:{companies:{companyid: { desksmemberships:[] }}}},    
{new: true}, function(){...}
Run Code Online (Sandbox Code Playgroud)

给... .. {username:'me',公司:{"yourcompany":{...},"companyid":{...}}

我该怎么做呢?

Joh*_*yHK 6

您必须以$set编程方式构建修改器:

var modifier = { $set: {} };
modifier.$set['companies.' + companyid] = { desksmemberships:[] };
Run Code Online (Sandbox Code Playgroud)

然后将其modifier用作findAndModify通话中的第三个参数.

您可能还需要考虑更改companies为数组而不是嵌入对象.

Node.js 4.x更新

您现在可以使用computed属性语法直接在对象文字中执行此操作:

collection('users').findAndModify(
    {username: usern}, 
    [['_id', 'asc']], 
    {$set:{['companies.' + companyid]: { desksmemberships:[] }}},    
    {new: true},
    function(){...});
Run Code Online (Sandbox Code Playgroud)