2012-04-02 177 views
2

我想要的東西,是隻返回元的_id和數據(不是我的領域,但由於貓鼬有這個典型的例子):mongoose embedd documents doc貓鼬嵌套文件

所以,我不希望在任何_id特別是,我正在尋找與meta.votes.length> 0或meta.fans.length> 0的記錄目前我做的:

Model.find({}, ['_id','meta'], function (err, data) { callback(null, data); });

我與無/數據/記錄。我猜想沒有找到這些設置的替代方法將是一種過濾出來的方法?

編輯:我已經暫時解決了我的問題有:

use : { type: Boolean, default: 1 },

雖然這可能是一個功能(顯示和隱藏結果 - 例如舊數據),我不認爲這是一個/解決方案/。

回答

1

那麼meta.votesmeta.fans都只是數字對象,所以我不認爲你想meta.fans.length直接訪問他們像一個int。

此查詢應該只檢索票> 0

Model.find({ "meta.votes" : { $gt : 0 } }, ['_id','meta']).exec(function(err, data) { 
    callback(null, data); 
}); 

的_id和元信息和此查詢應檢索只是球迷的_id和元信息> 0

Model.find({ "meta.fans" : { $gt : 0 } }, ['_id','meta']).exec(function(err, data) { 
    callback(null, data); 
}); 

,你可以將兩個查詢拉到一起,如下所示:

Model.find({ $or : [ { "meta.votes" : { $gt : 0 } }, 
        { "meta.fans" : { $gt : 0 } } ] }, ['_id','meta']).exec(function(err, data) { 
    callback(null, data); 
}); 

您應該看到退貨如:{ _id: 5001b3ce7cf4b534a3000002, meta: { votes: 1, fans: 1 } }