2013-07-08 11 views
10
db.History.find({'_file.project': 'someproject') 
     .populate('_file', 'name reference project') 
     .sort(sortField || '-created') 
     .limit(max || 64) 
     .exec(this); 

Burada, populer bir alanda eşleşen tüm belgeleri _file referansından bulmaya çalışıyorum. Çalışmıyor gibi görünüyor. Böyle bir şey mümkün mü?Mongoose sorgu alanını doldurma

Proje alanını bu nesneye çoğaltabilirim, yalnızca sorgulama için bir çözüm olarak, ancak tabi ki tercih ederim.

cevap

9

Hayır, bir find sorgunun koşulları parametresi yalnızca sorgulanan koleksiyona başvuruda bulunabilir.

populate diğer koleksiyonlardan ilişkili verileri çekmek için ek sorgu ile ana sorgu takip için sadece bir kolaylık fonksiyonu var, bir katılmak değildir.

+0

Teşekkürler. Öyleyse, emin olmak için, projeye dayalı Tarih koleksiyonunu sorgulamak için, proje alanını eklemem gerekecek ve dosya modelinden kopyalanmalı mıyım? Tüm koleksiyonları almak ve daha sonra filtrelemek, Tarih koleksiyonu büyük olasılıkla çok büyük olduğundan bir seçenek değildir. –

+1

@ 0x80 Sağ ya da "proje" ile eşleşen tüm "Dosya" belgelerini alın ve sonra ilk sorgudaki "_id" değerlerini kullanarak '' '' '' '' '' '' sorgusuna karşı '' '' 'sorgu kullanın. – JohnnyHK

+0

Şimdi anladım. İki seçenek olduğunu bilmek güzel. Teşekkürler! Bu cevap edildiğinde –