猫鼬嵌套文件

时间:2012-04-02 03:06:29

标签: node.js mongodb mongoose

我想要的是,只返回meta中的_id和数据(不是我的字段,但因为mongoose有这个主要的例子):mongoose embedd documents doc

所以,我不是特别想找任何_id,我正在寻找带有meta.votes.length>的记录。 0或meta.fans.length> 0.目前我这样做:

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

我得到没有/ data /的记录。我想另外一种找不到这些套装的方法就是过滤掉它们的方法吗?

编辑:我暂时解决了我的问题:

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

虽然这可能是一个功能(显示和隐藏结果 - 例如旧数据),我不认为这是/解决方案/。

1 个答案:

答案 0 :(得分:1)

meta.votesmeta.fans都只是数字对象,所以我认为你不希望meta.fans.length直接像int一样访问它们。

此查询应仅检索投票的_id和元信息> 0

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

此查询应仅检索粉丝的_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 } }