2016-03-28 9 views
1

Durum oluşan bir Array içinde bir nesne güncelleme İhtiyaç yardım:MongoDB - Bir Belge

Ben çalışanları 'adlı bir koleksiyona sahip. Bu koleksiyonda bir dizi yönetici var. Her yönetici nesnesinin 'directReports' adlı bir özelliği vardır. Bu özellik, astlarını temsil eden bir dizi nesnedir. Örneğin: Ben İstiyorum Ne

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", 
    },...]} 

Yapılacak:

Jane Doe için ('Yemek' değeriyle) 'statü' olarak adlandırılan yeni bir özellik eklemek istiyorum.

Bunu nasıl yapabilirim?

Her türlü yardım son derece takdir edilmektedir!

cevap

0

Modelinize 'başlat' değeri ile 'durum' eklemeniz ve tüm çalışan verilerini güncellemek için bir işlev oluşturduktan sonra bence. o SamAccountName s benzersizdir varsayarsak

1

yardımcı Umut: Eğer Mongoose kullandığınız beri bu Sorunun etiketleri dayanarak

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

, uygun şekilde şema güncellemek için emin olun. Şemanızı yeniden çalışmak için Mongoose query population'dan yararlanmayı düşünebilirsiniz.

+0

Bunu kullanmayı denedim ve bana bir sözdizimi hatası verdi: E SORGU [thread1] SyntaxError: geçersiz özellik id @ (kabuk) –

+0

Eğer 'id's veya' _id's kullanıyor musunuz? Sorunuza bağlı id id idim. Varsayılan olarak MongoDB, 'Nesne ' – ggallo

+0

olan benzersiz tanımlayıcı olarak' _id' kullanır, aslında hem yönetici hem de alt kullanıcı için SamAccountName kullanıyorum. Mongo'nun _id'i bile denedim ama bu da işe yaramadı. –