2015-03-17 6 views
5

मेरे पास एक मोंगो उपयोगकर्ता डेटाबेस है जिसे मैं मोंगोस से पूछताछ कर रहा हूं। मैं यह जानना चाहता हूं कि कोई उपयोगकर्ता पहले से मौजूद है या नहीं। मैं चाहता हूं कि यह पहली बार खोज करे कि कोई उपयोगकर्ता पहले से ही किसी ईमेल के साथ मौजूद है, और यदि ऐसा नहीं होता है तो यह देखना चाहिए कि कोई उपयोगकर्ता फ़ोन के साथ मौजूद है या नहीं। क्या इसे 2 अलग-अलग प्रश्नों में किया जाना चाहिए या इसे एक में घुमाया जा सकता है?मोंगोस ढूंढें 'या तो' क्वेरी

User.findOne({ email: req.body.email }).exec(function(err, user){ 

    if (user) //user already exists with email 
    else //no users with that email but we haven't checked phone number yet! 

}); 

उत्तर

17

क्यों न केवल $or ऑपरेटर का उपयोग करें?

SELECT * FROM users WHERE email = '%1' OR phone = '%2' 
+0

वहाँ दूसरे पर एक मूल्य वरीयता देने का एक तरीका है:

User.findOne({$or: [ {email: req.body.email}, {phone: req.body.phone} ]}).exec(function(err, user){ if (user) {} //user already exists with email AND/OR phone. else {} //no users with that email NOR phone exist. }); 

यहाँ छद्म SQL बराबर है? उदाहरण के लिए, पहले सभी ईमेल पते खोजें, फिर फ़ोन मौजूद होने पर कोई भी मौजूद नहीं है। –