在使用Mongoose(NodeJS)的MongoDB中,如何在填充的字段上查询(查找)?

时间:2014-08-16 01:05:56

标签: node.js mongodb mongoose

我有两个集合:用户和推文。模式就像这些(我删除了不重要的字段,因为它们很多):

UsersSchema = {
    _id:Number,
    followers_count:Number
};
TweetsSchema = {
    _id:Number,
    is_retweet:Boolean,
    user:{type:Number, ref:"Users"}
}

当我查询推文时,我通常会创建一个populate("user"),所以我知道发推文的用户是谁。到现在为止还挺好。但是现在,我需要检索所有推文(is_retweet)的推文的关注者数量(followers_count)。我尝试过聚合,但我不能使用Tweets架构中创建的参数(followers_count)来计算总和。

我在Mongo没有太多经验:(我已经搜索了一段时间的答案......有什么方法可以解决这个问题,或者我必须首先查询所有用户ID出现在带有is_retweet的推文中,然后是另一个返回该数组id的followers_count的查询?

1 个答案:

答案 0 :(得分:0)

MongoDB不进行连接。如果您需要两个集合中提供的信息,则至少需要两个查询。

具体取决于您的"典型"查询是,您应该考虑将部分或全部用户信息非规范化为推文。

您的查询也存在语义问题。您想要哪些粉丝数?他们推文时高音扬声器的粉丝数量?他们在提取用户文档时的追随者?对于转推,了解最终转发的推文时有多少粉丝可能更为相关。你可以想象一个社交媒体人物,从8个粉丝开始,推特140个字符的结晶光彩,以及通过两个月后拥有1500万粉丝的转推获得的人气。