sql >> Database >  >> NoSQL >> MongoDB

Meteor.js - manieren om gebruikers te zoeken in meerdere collecties

OK, ik heb een manier bedacht om dit te doen zonder mijn hele database opnieuw te doen. Bravo Meteor!

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

en op de klant :

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

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

Nu bevat SearchCollection de gegevens die ik wil van de resultaten, waar ik kan beslissen welke gegevens ik van elke verzameling afzonderlijk wil hebben.

Een nadeel is dat ik duidelijk gegevens dupliceer - sommige, zo niet al deze records bestaan ​​al op de client...




  1. mongodb verbinden met behulp van php

  2. Docker&Celery - FOUT:Pidfile (celerybeat.pid) bestaat al

  3. Max en min in mongodb

  4. Hoe kan ik een automatisch incrementeel veld op meteoor maken?