2012-12-26 20 views
108

MongoDB दस्तावेज़ (टेबल) मान लीजिए 'उन'MongoDB रखी गई वस्तु की श्रेणी में खोज करने के लिए कैसे

{ 
    _id: 1, 
    name: { first: 'John', last: 'Backus' }, 
    birth: new Date('Dec 03, 1924'), 
    death: new Date('Mar 17, 2007'), 
    contribs: [ 'Fortran', 'ALGOL', 'Backus-Naur Form', 'FP' ], 
    awards: [ 
      { award: 'National Medal', 
       year: 1975, 
       by: 'NSF' }, 
      { award: 'Turing Award', 
       year: 1977, 
       by: 'ACM' } 
      ] 
} 
and other object(person)s 

है मैं व्यक्ति जो पुरस्कार 'राष्ट्र पदक' है और वर्ष 1975 में सम्मानित किया जाना चाहिए पता लगाना चाहते हैं अन्य व्यक्ति भी हो सकते हैं जिनके पास यह पुरस्कार अलग-अलग वर्षों में है।

पुरस्कार प्रकार और वर्ष का उपयोग करके मैं इस व्यक्ति को कैसे ढूंढ सकता हूं। तो मैं सटीक व्यक्ति प्राप्त कर सकता हूं।

उत्तर

202

सही तरीका है:

db.users.find({awards: {$elemMatch: {award:'National Medal', year:1975}}}) 

$elemMatch आप एक ही सरणी तत्व भीतर एक से अधिक घटक मिलान करने के लिए अनुमति देता है।

$elemMatch बिना मोंगो में 1975

अधिक जानकारी के लिए MongoDB $elemMatch Documentation देखें कुछ वर्ष में राष्ट्रीय पदक के साथ उपयोगकर्ताओं और 1975s में कुछ पुरस्कार के लिए दिखाई देगा, लेकिन राष्ट्रीय पदक के साथ उपयोगकर्ताओं के लिए नहीं। सरणी के साथ दस्तावेज़ पूछताछ के बारे में अधिक जानकारी के लिए Read Operations Documentation देखें।

+3

की सरणी को खोजने के लिए मैं इस दूसरी बार वोट दें सकता है - के बाद से मैं दूसरी बार मैं होगा के लिए फिर से इस जवाब पर उतरा haha –

5

उपयोग $ elemMatch विशेष वस्तु

db.users.findOne({"_id": id},{awards: {$elemMatch: {award:'Turing Award', year:1977}}})