2013-03-14 8 views
5

में हैश शामिल एक सरणी क्षेत्र का पता कर मैं इसकि mongoid

class User 
    include Mongoid::Document 
    field :c, as: :categories, type: Array 
end 

की तरह एक मॉडल है और मैं इस तरह उस पर जानकारी संग्रहीत कर रहा हूँ:

a = UserCheckin.new 
a.c = [{id: rand(1000), name: 'a'}, {id: rand(1000), name: 'b'}, {id: rand(1000), name: 'c'}] 
a.save 

मैं नहीं जानता कि अगर मैं गलत इस्तेमाल कर रहा हूँ उस पर हैश संग्रहीत करके सरणी प्रकार, लेकिन बात यह है कि mongodb इसके बारे में शिकायत नहीं करता है।

मैं ऐसे उपयोगकर्ताओं की तरह कुछ कैसे पूछूं जहां श्रेणी का नाम 'ए' है या श्रेणी आईडी 2 से अधिक है?

अग्रिम धन्यवाद,

उत्तर

12

मैंने किसी को भी छोड़ दिया के लिए, मैं इसे यहाँ पोस्ट करेंगे जवाब खोजने है लगता है ...।

User.where(c: {'$elemMatch' => {name: 'a'}}) 

यह उन सभी उपयोगकर्ताओं को वापस कर देगा, जिनकी श्रेणियों के सरणी में 'ए' के ​​नाम से एक या अधिक तत्व है।