2016-03-28 13 views
1

状況の配列内のオブジェクトを更新する必要性のヘルプ:MongoDBのドキュメント

私は「従業員の名前のコレクションを持っています。このコレクションには一連のマネージャが含まれています。各マネージャオブジェクトには、「directReports」というプロパティがあります。このプロパティは、その部下を表すオブジェクトの配列です。私が何をしたいのですがどのような

db.employees.find({ name: 'John Smith' }); 

{ 
    "id" : 1234, 
    "name" : "John Smith", 
    "FirstName" : "John", 
    "LastName" : "Smith", 
    "SamAccountName" : "jsmith", 
    "DepartmentName" : "Management", 
    "SupID" : 0, 
    "Email" : "[email protected]", 
    "SupSamAccountName" : "bross", 
    "SupName" : "Bob Ross", 
    "directReports" : [ 
    { 
     "id" : 5678, 
     "name" : "Jane Doe", 
     "FirstName" : "Jane", 
     "LastName" : "Doe", 
     "SamAccountName" : "jdoe", 
     "DepartmentName" : "Agent", 
     "SupID" : 1234, 
     "Email" : "[email protected]", 
     "SupSamAccountName" : "jsmith", 
     "SupName" : "John Smith", 
    },...]} 

:たとえば

私はジェーン・ドウに(「ランチ」の値を持つ)「状態」と呼ばれる新しいプロパティを追加したいと思います。

どうすればいいですか?

ご協力いただきありがとうございます。

答えて

0

「ステータス」をモデルに「起動」の値とともに追加し、すべての従業員データを更新する関数を作成する必要があると思います。 は、それがSamAccountName Sがユニークであると仮定すると、

1

を役に立てば幸い:あなたはマングースを使用していることから、この質問のタグに基づいて

db.employees.update({ 
    { SamAccountName: "jsmith", directReports.SamAccountName: "jdoe" }, 
    { $set: { directReports.$.status: "Lunch" } } 
}) 

は、適切なスキーマを更新してください。 Mongoose query populationを利用するには、スキーマを再作成することを検討してください。

+0

これを実行しようとすると、構文エラーが発生しました。 E QUERY [スレッド1] SyntaxError:無効なプロパティID @(シェル) –

+0

'id'または' _id'を使用していますか?私はあなたの質問に基づいて 'id'を仮定しました。デフォルトでは、MongoDBは一意の識別子として '_id'を使用します。これは' ObjectId'です – ggallo

+0

私は実際にマネージャと従属者の両方にSamAccountNameを使用しています。私はMongoの_idを使ってみましたが、それもうまくいきませんでした。 –

関連する問題