一尘不染

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

node.js

{用户名:’我’,公司:{“您的公司”:{…}}

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

{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”:{…}}

我该怎么做呢?


阅读 217

收藏
2020-07-07

共1个答案

一尘不染

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

var modifier = { $set: {} };
modifier.$set['companies.' + companyid] = { desksmemberships:[] };

然后modifier用作findAndModify调用中的第三个参数。

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

Node.js 4.x更新

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

collection('users').findAndModify(
    {username: usern}, 
    [['_id', 'asc']], 
    {$set:{['companies.' + companyid]: { desksmemberships:[] }}},    
    {new: true},
    function(){...});
2020-07-07