mongodb कई ऐरे आइटम द्वारा खोजते हैं


96

अगर मेरे पास ऐसा कोई रिकॉर्ड है;

{
  "text": "text goes here",
  "words": ["text", "goes", "here"]
}

मैं MongoDB में इससे कई शब्दों का मिलान कैसे कर सकता हूं? एक शब्द का मिलान करते समय मैं यह कर सकता हूं;

db.find({ words: "text" })

लेकिन जब मैं कई शब्दों के लिए यह कोशिश करता हूं, तो यह काम नहीं करता है;

db.find({ words: ["text", "here"] })

मैं अनुमान लगा रहा हूं कि एक सरणी का उपयोग करके, यह व्यक्तिगत सामग्री से मेल खाने के बजाय रिकॉर्ड में पूरे सरणी को रिकॉर्ड करने की कोशिश करता है।

जवाबों:


168

इस बात पर निर्भर करता है कि आप उन दस्तावेज़ों को खोजने की कोशिश कर रहे हैं जिनमें wordsदोनों तत्वों ( textऔर here) का उपयोग किया गया है $all:

db.things.find({ words: { $all: ["text", "here"] }});

या तो उनमें से ( textया here) का उपयोग कर $in:

db.things.find({ words: { $in: ["text", "here"] }});

3
इससे मुझे भी मदद मिली, मुझे एक सरणी में एक ऑब्जेक्ट आईडी खोजने के लिए इसकी आवश्यकता थी, और जहां $ में कुछ ऐसा था: [ObjectId ("4f9f2c336b810d0cf0000017")] विफल रहा, $ में: "" 4f9f2c336b810d0cf0000017 "]
Jbnunn


1
क्या यह सरणी को लूप करने और एकल खोज () करने से बेहतर है?
रोहित नायर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.