2015-04-17 4 views
2

У нас есть некоторые коллекции внутри MongoDB, которые являются динамическими, они следуют шаблону типа «XX_YY», но могут быть сотни таких коллекций, как theese.Meteor dynamic MongoDB Collections

Мы можем получить картину, запрашивая внутри db.patterns коллекции, но я не знаю, как мы можем найти thoose шаблоны внутри db.patterns и затем запрос thoose мы хотим, чтобы в MongoDB, пример в MongoDB будет что-то вроде этого

var collections = db.patterns.find(); 

db.getCollection(collections[0]).find(); 

Как я могу достичь этого в MeteorJS?

+0

Вы еще что-то пробовали в Метеор? Монгольские селекторы и объекты довольно легко манипулировать, поэтому я не вижу, где ваша проблема блокировки. –

+0

Я попытался сделать «новый Mongo.Collection (name);» для каждого шаблона, но я не знаю, может ли он быть действительно динамичным, например, когда шаблон разрушен или создается новый, я не делаю Не знаете, как это может повлиять или будет реагировать, например, доступ к вновь созданной коллекции паттернов, когда приложение уже запущено. –

ответ

2

Вы можете просто сделать new Mongo.Collection("XX_YY"), чтобы получить коллекцию с этим именем.

Однако могут возникнуть последствия, если вы создадите несколько Mongo.Collection s, указывающих на одну и ту же базовую коллекцию. У меня никогда не было причин делать это, поэтому я не знаю. Однако вы можете использовать кэш, чтобы избежать создания нескольких копий:

var collectionCache = {}; 

function getCollection(name) { 
    var cached = collectionCache[name] 
    if (!cached) { 
    cached = collectionCache[name] = new Mongo.Collection(name); 
    } 
    return cached; 
} 

Я предполагаю, что количество коллекций ограничено, так что вам не придется беспокоиться о кэш становится сколь угодно большим течением времени.