MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Meteor.js - cara melakukan pencarian pengguna melalui beberapa koleksi

OK, saya telah menemukan cara untuk melakukan ini tanpa mengulang seluruh database saya. Meteor Bravo!

di server :

Meteor.publish('search_results', function(query){
    if(query){
        var self = this;
        var actors = Actors.find({ $or : [{ name : query}, { actor_biography : query }] ),
        films = Films.find({ $or : [{ name : query}, { actor_biography : query }] ),
        cinemas = Cinemas.find({ $or : [{ name : query}, { actor_biography : query }] );
        actors.forEach(function(doc){
            self.added('search_collection', doc._id, { name : doc.name, type : 'actor' });
        });
        films.forEach(function(doc){
            self.added('search_collection', doc._id, { name : doc.name, type : 'film' });
        });
        cinemas.forEach(function(doc){
            self.added('search_collection', doc._id, { name : doc.name, type : 'cinema' });         
        this.ready();
    } else {
        this.ready();
    }
});

dan pada klien :

Deps.autorun(function(){
    Meteor.subscribe('search_results', Session.get('currentQuery'));
});

SearchCollection = new Meteor.Collection('search_collection');

Sekarang SearchCollection berisi data yang saya inginkan dari hasil, di mana saya dapat memutuskan data apa yang saya inginkan dari setiap koleksi secara terpisah.

Salah satu kelemahannya adalah saya jelas-jelas menggandakan data - beberapa jika tidak semua catatan ini sudah ada di klien...




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kemungkinan permintaan dengan MongoDB

  2. Pencarian teks lengkap di mongodb di .net

  3. Layanan Mongodb, sharding, dan banyak jendela

  4. Kecepatan Pembaruan Mongo

  5. Bagaimana MongoDB menghindari kekacauan injeksi SQL?