MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoDB, Mongoose:मिले दस्तावेज़ में उप-दस्तावेज़ कैसे खोजें?

आपको या तो अपने एम्बेडेड दस्तावेज़ों के लिए एक नई स्कीमा बनाने की आवश्यकता है, या प्रकार की घोषणा को एक रिक्त सरणी के रूप में छोड़ दें ताकि mongoose Mixed . के रूप में व्याख्या करता है टाइप करें।

var userSchema = new mongoose.Schema({
  name: String,
  photos: []
});
var User = mongoose.model('User', userSchema);

-- या --

var userSchema = new mongoose.Schema({
  name: String,
  photos: [photoSchema]
});

var photoSchema = new mongoose.Schema({
  src: String,
  title: String
});

var User = mongoose.model('User', userSchema);

और फिर आप इस प्रकार बचत कर सकते हैं:

var user = new User({
  name: 'Bob',
  photos: [ { src: '/path/to/photo.png' }, { src: '/path/to/other/photo.png' } ]
});

user.save();

यहां से, आप अपने एम्बेड किए गए दस्तावेज़ों को खोजने के लिए केवल सरणी प्रिमिटिव का उपयोग कर सकते हैं:

User.findOne({name: 'Bob'}, function (err, user) {

  var photo = user.photos.filter(function (photo) {
    return photo.title === 'My awesome photo';
  }).pop();

  console.log(photo); //logs { src: '/path/to/photo.png', title: 'My awesome photo' }
});

-- या --

आप विशेष id() . का उपयोग कर सकते हैं आईडी द्वारा देखने के लिए एम्बेडेड डॉक्स में विधि:

User.findOne({name: 'Bob'}, function (err, user) {
    user.photos.id(photo._id);
});

आप यहां और अधिक पढ़ सकते हैं:http://mongoosejs.com/docs/subdocs.html

सुनिश्चित करें कि आप नहीं नेवले के साथ स्कीमा पंजीकृत करें, अन्यथा यह एक नया संग्रह बनाएगा। यह भी ध्यान रखें कि यदि बच्चे के दस्तावेज़ अक्सर खोजे जाते हैं, तो नीचे दिए गए रेफरी और जनसंख्या का उपयोग करना एक अच्छा विचार होगा। भले ही यह डीबी को दो बार हिट करता है, यह इंडेक्सिंग के कारण बहुत तेज है। साथ ही, mongoose डबल नेस्टिंग डॉक्स (यानी बच्चों के पास बच्चे डॉक्स भी हैं) पर बंध जाएगा

var user = mongoose.Schema({
  name: String,
  photos: [{ type: Schema.Types.ObjectId, ref: 'Photo' }]
});

var photo = mongoose.Schema({
  src: String,
  title: String
});

User
  .findOne({ name: 'foo' })
  .populate('photos')
  .exec(function (err, user) {
    console.log(user.photos[0].src);
  });

प्रासंगिक दस्तावेज़ यहां पाए जा सकते हैं http://mongoosejs.com/docs/populate.html



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडब में पेजिनेशन लागू करना

  2. Ansible . के साथ MongoDB शार्ड्स को तैनात और कॉन्फ़िगर करना

  3. जावा का उपयोग करते हुए MongoDB एकत्रीकरण

  4. मोंगो ट्रिपल कंपाउंड इंडेक्स

  5. उल्का - संग्रह। खोज () हमेशा सभी क्षेत्रों को लौटाता है