sorgu

2016-03-25 21 views
0

varsayalım Ben şu içeren bir belge:sorgu

var userSchema = Schema({ 
    _id: Number, 
    fName: String, 
    lName: String, 
    email: String, 
    braintreeflag : {type:Boolean, default: false}, 
    balance: {type:Number, default: 0}, 
    braintreeId : {unique:true, type:Number, default:0}, 
    notificationHubTag: String, 
    defaultPaymentMethod: Number, 
    braintreeTokens : [{id: Number, token : String}] 
}); 

exports.getDefaultPaymentMethodToken = function(uId,defaultId, res){ 
    //TODO query 
} 

nerede _ID belgesinde bakmak istiyorum: UID ve nerede id Dizi öğesi bulmak istiyorum : defaultId ve bu öğedeki belirteci döndür. SO üzerinde bakınca, en iyi çözüm gibi görünüyor ama test edilmemiş ne bulundu:

User.findOne({_id:uId, 'braintreeTokens.id': defaultId}, {'braintreeTokens.$':1}, function(err,user){ 
     }) 
+0

Ne hakkında Birden fazla kişi aynı soyadını paylaşırsa? – Saleem

cevap

0

Dene:

db.collection.aggregate([ 
    {$unwind:"$employees"}, 
    {$match:{"employees.lastName":"Doe"}} 
]) 

Bu sorgu size sahip bir veya daha fazla belgeleri döndürecektir lastName = "Doe"

+0

Örnek MongoDB belgesini kaldırdığınızdan, bu çözüm neredeyse alakasız hale geldi. Farklı bir çözüm arıyorsanız, orijinali değiştirmek yerine başka bir soru göndermeyi öneririm. – Saleem