2014-12-31 39 views
1

我有5個集合C1,C2,C3,C4和N5,每個集合都有一個最後更新的值。基於Mongo列值的返回集合名稱

db.getCollectionNames().filter(function(c){ return c.indexOf('C')==0}) 

將返回以「C」開頭的所有集合。

是否有可能先行一步,並根據「last_updated」列做一個過濾器,這樣我就可以得到昨天更新的所有「C」集合。

像這樣

db.getCollectionNames().filter(function(c){ return (db.c.find({update_on: "01-Dec-2014"}).count() 
> 1)}); 

Eventhough查詢運行良好它不是yeilding任何結果。

+0

你嘗試更改支票'> 1'以'> 0'?什麼類型的數據存在於'update_on'列中?它是'String'還是'ISODate()'? – BatScream

+0

其字符串「01-Dec-2014」和> 0沒有給出任何結果。即使_id查詢也返回空。 > db.getCollectionNames()。filter(function(c){return(db.c.find({_ id:「548b1ff498bfb71f682e1aa2」})。co unt()> 0)}); [] – Abhi

+0

請參閱我的回答,您需要將它用作'db [c]'。 – BatScream

回答

1

即使在查詢日期的集合中存在一條記錄,也需要返回true

二,db.c解析爲值c,因此找到一個名爲c的集合的計數,該集合不存在。要將c作爲變量解析,我們需要將其作爲db[c]

修改後的代碼下面要這麼做:

db.getCollectionNames().filter(function(c){ 
var rec = db[c].count({update_on: "01-Dec-2014"}); 
return (rec > 0); 
})