sql >> Database teknologi >  >> NoSQL >> MongoDB

Meteor:udgiv 2 forskellige projektioner af array-elementer

Jeg undersøgte forskellige tilgange. Problemet kan løses fra sag til sag ved omhyggeligt at vælge felter og passe på abonnementsrækkefølgen, men disse løsninger er spinkle og er afhængige af ikke-dokumenterede vilkårlige forhold.

Den eneste rigtige, generiske løsning er en virtuel samling . Det enkleste tilfælde er simpelthen at udgive en markør under et andet samlingsnavn på klientsiden. For eksempel:

function publishVirtual(sub, name, cursor) {
  var observer = cursor.observeChanges({
    added  : function(id, fields) { sub.added(name, id, fields) },
    changed: function(id, fields) { sub.changed(name, id, fields) },
    removed: function(id)         { sub.remove(name, id) }
  })

  sub.onStop(function() {
    observer.stop() // important. Otherwise, it keeps running forever
  })
}

Og så, i din publikation, i stedet for at returnere en cursor :

var cursor = Users.find()
publishVirtual(this, 'virtualUsers', cursor)
this.ready()



  1. Hvordan bruger man sadd med flere elementer i Redis ved hjælp af Python API?

  2. mongoDB Aggregation:sum baseret på matrixnavne

  3. Tilføj simpel læse-skriv-bruger i mongo 3.4.1

  4. Hvordan kan jeg køre redis på en enkelt server på forskellige porte?