2012-03-23 9 views
5

के रूप में आईडी का उपयोग करते समय क्या बीच का अंतर है मेरी क्वेरी में केवल मापदंड के रूप में दस्तावेज़ id का उपयोग कर:Mongoid कहां मिल बनाम जब मापदंड

Board.only(:_id).find(params[:board_id]) 

और

Board.where(_id: params[:board_id]).only(:_id) 

केवल एक चीज मैंने देखा है क्या यह जेसन के रूप में परिणाम प्रिंट कर रहा है जब इसका उपयोग स्क्वायर ब्रैकेट्स

उत्तर

9

find में एक दस्तावेज़ देता है।

where मानदंडों से मेल खाने वाले दस्तावेज़ों की एक श्रृंखला देता है।

4

केली का जवाब देने के लिए जोड़ने के लिए:

तो रिकॉर्ड मिलान नहीं पाया जाता है: find अपवाद, where रिटर्न खाली गणनीय फेंकता है।

+3

यह व्यवहार Mongoid की raise_not_found_error सेटिंग (सत्य पर डिफ़ॉल्ट) पर निर्भर करता है। Http://mongoid.org/en/mongoid/docs/installation.html –

+0

@PetrGladkikh देखें: हाँ, इसे इंगित करने के लिए धन्यवाद। –

0

पिछले उत्तरों सही हैं, मैं बस एक त्रुटि को उठाए बिना एक रिकॉर्ड खोजने के लिए जोड़ूंगा, find के बराबर where.first है। आपके मामले में

Board.where(_id: params[:board_id]).first.only(:_id) 
संबंधित मुद्दे