3

{ユーザー名:'私'、会社:{"あなたの会社":{...}}

会社をユーザーレコード(ユーザーコレクション)に挿入して、次のようにします。

{ユーザー名:'me'、companys:{"yourcompany":{...}、 "mycompany":{...}}

しかし、名前は動的です。

var companyid = "mycompany";

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

これを与える..{ユーザー名:'me'、companys:{"yourcompany":{...}、 "companyid":{...}}

どうすればよいですか?

4

2 に答える 2

6

$setプログラムで修飾子を作成する必要があります。

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

次に、呼び出しmodifierの3番目のパラメーターとして使用しますfindAndModify

companiesまた、埋め込みオブジェクトではなく配列に変更することを検討することもできます。

Node.js4.xアップデート

これで、計算されたプロパティ構文を使用して、オブジェクトリテラルでこれを直接行うことができます。

collection('users').findAndModify(
    {username: usern}, 
    [['_id', 'asc']], 
    {$set:{['companies.' + companyid]: { desksmemberships:[] }}},    
    {new: true},
    function(){...});
于 2012-08-29T19:32:33.773 に答える
0

私はかなりの数の投稿でこの質問を見てきました、それらのいくつかは非常に複雑です-私をクレイジーと呼んでください、しかしあなたはこれを行うことができます(ノード+モンゴ):

私のデータベーススキーマ'matches'は配列に設定されています。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)

角かっこ内の任意の変数を使用できます。

于 2015-12-06T08:38:35.563 に答える