【发布时间】:2015-05-05 07:58:03
【问题描述】:
我在 mongodb 中有一个 cmets 集合,我想获得基于数组的选择。我可以对要查询的 offerId 字段或 _id 的数组执行以下操作。
var offerIds = [123, 456, 789];
model.find({
'offerId': { $in: offerIds }
}, function(err, docs){
console.log(docs);
});
这可以正常工作,但是当我使用限制时,它会限制总数,而不是将限制应用于数组中的每个查询。当我使用.limit(5) 时,我期望发生的是返回 5 个 cmets,其中 offerId == 123,另外 5 个 cmets,其中 offerId == 456,另外 5 个 cmets,其中 offerId == 789。
相反,我得到 5 个 total,因此如果 offerId == 123 有 4 个 cmets,则 offerId == 456 只返回一个,使总数为 5。
我在文档中阅读了有关 $limit 的信息,但我不知道在哪里使用它或让它工作。
感谢您的帮助。
【问题讨论】:
-
您需要三个查询。或者特别是
n查询您要查询的offerId值的数量。您可能指的 [$limit](docs.mongodb.org/manual/reference/operator/aggregation/limit) 是一个聚合管道阶段,它与.limit()作为聚合框架的查询修饰符所做的事情相同。可以通过聚合来做到这一点,但除了相对较小的结果集之外几乎完全不切实际。一个例子是here,但实际上,使用多个查询。