2016-03-22 15 views
1
"translation" : [ 
    { 
     "language" : "english", 
     "name" : "shahid Afridi", 
     "desc" : "batsmen", 
     "player" : "capten" 
    }, 
    { 
     "language" : "spanish", 
     "name" : "shhid Ofridi", 
     "desc" : "batsmeen", 
     "player" : "capteen" 
    }, 
    { 
     "language" : "french", 
     "name" : "hhid afrede is best", 
     "desc" : "batsmin", 
     "player" : "captn" 
    } 
], 
    "auto-publish" : "publish", 
    "color" : "red", 
    "boolean" : "true" 

I MongoDB Bu belge sahip (diğer kardeş 1 değerini agregasyonu ile veya koymadan) Kardeş öğeleri ile dizinin bir elemanı getiriliyor I için [0], renk ve boolean otomatik yayınlamak ile istiyoruz. Not: Diğer kardeş değerini toplanmasına kullanarak veya koyarak olmadan 1dönüş olarak

+0

Lütfen MongoDB sürümünüzü belirtin mi? Ayrıca, toplama çerçevesini kullanmak istemediğinizi belirtin mi? – Saleem

cevap

0
Kursörünüzün üzerinde forEach kullanabilirsiniz

: Sana kullanmadan ihtiyaç belgeyi yeniden düzenlemek için başka bir yolu yoktur sanmıyorum

db.test.find({}).forEach(function(doc){ 
    if (doc.hasOwnProperty('translation')){ 
     var newdoc = {}; 
     newdoc = doc.translation[0]; 
     newdoc['auto-publish'] = doc['auto-publish']; 
     newdoc['color'] = doc['color']; 
     newdoc['boolean'] = doc['boolean'];   
     print(tojson(newdoc)); 
    } 
}) 

toplama.

+0

Cevabınız için teşekkür ederiz. Fakat diğer kardeş alanın 1 değerini koymakla eşdeğerdir. Bunu tercih etmiyorum çünkü 100 alanımız varsa, 100'e 1'e veya newdoc [''] = doc [''] 'ı denediğiniz şekilde 100'e koymamız gerekiyor. alanlar. –

+0

Sanırım, bir değer oluşturmadan veya bir doc alanını bir diğerine eşitlemeden, gerekli sonucu elde etmenin tek yolu birleşimdir. Neden toplama kullanmak istemiyorsunuz? – aokozlov