MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Meteor.js - начини за търсене на потребители в множество колекции

Добре, разработих начин да направя това, без да правя повторно цялата си база данни. Браво Метеор!

на сървъра :

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

и на клиента:

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

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

Сега SearchCollection съдържа данните, които искам от резултатите, където мога да реша какви данни искам от всяка колекция поотделно.

Един недостатък е, че явно дублирам данни - някои, ако не всички от тези записи вече съществуват на клиента...




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Търсене на вложени документи в MongoDB

  2. Как да активирам ReadConcernMajority в MongoDB 3.6.3?

  3. Източникът на синхронизиране нямаше грешка във версията за съвместимост на функцията при добавяне на член на MongoDB 3.6 към набор от реплики 3.4

  4. вземете всички документи с максимална стойност, като използвате агрегиране в mongodb

  5. Заявка за агрегиране на MongoDB за преброяване