2015-04-17 107 views
2

我們在MongoDB裏面有一些動態的集合,它們遵循像「XX_YY」這樣的模式,但是可以有像這樣的數百個集合。流星動態MongoDB集合

我們可以通過內部db.patterns收集查詢得到的格局,但我不知道我們怎麼能找到裏面db.patterns thoose模式,然後查詢thoose我們希望裏面的MongoDB,MongoDB中一個例子是這樣的

var collections = db.patterns.find(); 

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

我如何在MeteorJS中實現這一目標?

+0

你有沒有在Meteor中嘗試過任何東西? Mongo選擇器和對象很容易操作,所以我並不真正看到你的阻塞問題。 –

+0

我試圖爲每個模式執行'new Mongo.Collection(name);',但我不知道它是否真的是動態的,例如,當一個模式被銷燬或創建一個新模式時,我不會不知道它是如何影響的,或者它是否會被動,例如在應用程序已經運行時訪問新創建的模式集合。 –

回答

2

您只需執行new Mongo.Collection("XX_YY")即可獲得具有該名稱的集合。

但是,如果您創建指向相同底層集合的多個Mongo.Collection,則可能會有後果。我從來沒有任何理由這樣做,所以我不知道。但是你可以使用一個高速緩存,以避免創建多個副本:

var collectionCache = {}; 

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

我假設藏品的數量是有界的,所以你不必擔心緩存得到隨着時間的推移任意大。