2012-04-02 99 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 } }