蒙戈的NodeJS插入子文档 - 动态字段名(Nodejs Mongo insert into su

2019-06-27 13:47发布

{用户名: '我',企业:{ “yourcompany”:{...}}

我想一个公司插入到用户记录(用户采集),使:

{用户名: '我',企业:{ “yourcompany”:{...}, “myCompany的”:{...}}

但名字是动态的..

var companyid = "mycompany";

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

给这个.. {用户名: '我',企业:{ “yourcompany”:{...}, “companyid”:{...}}

我该怎么做呢?

Answer 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(){...});


Answer 2:

我已经看到不少帖子这个问题,其中一些相当复叫我疯了,但你可以做到这一点(节点+蒙戈):

我的数据库架构“匹配”被设置为一个数组。 在蒙戈数据[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)

您可以在括号中使用任何变量。



文章来源: Nodejs Mongo insert into subdocument - dynamic fieldname