MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Meteor.js - sposoby na wyszukiwanie użytkowników w wielu kolekcjach

OK, wypracowałem sposób na zrobienie tego bez ponownego robienia całej mojej bazy danych. Brawo Meteor!

na serwerze :

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();
    }
});

i na kliencie :

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

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

Teraz SearchCollection zawiera dane, które chcę uzyskać z wyników, gdzie mogę zdecydować, jakie dane chcę z każdej kolekcji osobno.

Jedną wadą jest to, że wyraźnie powielam dane - niektóre, jeśli nie wszystkie, te rekordy już istnieją na kliencie...




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Procent warunków OR dopasowanych w mongodb

  2. Wyjaśnienie MongoDb nie powiodło się:nieznany operator najwyższego poziomu:$query

  3. Uruchom rekomendację Mahout RowSmilarity na danych MongoDB

  4. Samopodpisane połączenie SSL MongoDB:weryfikacja równorzędnego certyfikatu SSL nie powiodła się

  5. Jak wstawić zagnieżdżone obiekty do MongoDB za pomocą Laravel 5?