猫鼬用数组元素的条件填充嵌套数组

Yangxiao Ou

我有一个ArticleGroup,其中包含文章,模型看起来像这样

var ArticleGroup = new mongoose.Schema({
    articles:[{type:mongoose.Schema.Types.ObjectId,ref:'Article'}]
})

var Article = new mongoose.Schema({
    rates:[{
        uid:String,
        rate:Number //user's rate number to this article
    }]
})

现在,一个用户(让我们称他为“杰克”)想要对ArticleGroup进行查询,以填充该组中的文章,并选择提交的费率

通常我这样做

ArticleGroupModel
    .findById(articleGroupId)
    .populate('articles','rates')
    .select('articles')
    .exec((err, articleGroup) => {
         if (err) return next(err)
         //...
    })

但是现在,如果一篇文章具有杰克的汇率,我现在只想要杰克的汇率,就可以像这样返回该文章

{
    _id:"23jrf23orj89p3fwje4",
    rates:[{
        uid:"JACK's uid",
        rate:"JACK's rate number"
    }]
}

如果一篇文章没有“杰克”汇率,则仍会填充该文章,但会以这样的方式提交空汇率

{
     _id:"23jrf23orj89p3fwje4",
     rates:[]
}

有什么办法吗?

罗菲尼卡

为了获得此结果,您应该使用以下内容重新考虑您的数据模型:

ArticleGroup = new mongoose.Schema
    some details here ...

ArticleRate = new mongoose.Schema
    uid: String
    rate: Number

Article = new mongoose.Schema
    group:
        type: mongoose.Schema.ObjectId
        ref: 'ArticleGroup'
    rates:[ArticleRate]

并执行这种查询:

Article
.find(group: groupId)
.populate({
   path: 'rates',
   match: { uid: { $in: { JACK_UID } } },
   select: 'rate'
 })
 .exec();

您可以在Mongoose文档中找到更多有用的信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

猫鼬用数组元素的条件填充嵌套数组

来自分类Dev

用猫鼬计数嵌套数组

来自分类Dev

用猫鼬更新嵌套数组

来自分类Dev

猫鼬填充不填充嵌套数组数据

来自分类Dev

更新嵌套数组猫鼬内的元素

来自分类Dev

用猫鼬更新双嵌套数组中的字段

来自分类Dev

用猫鼬对嵌套数组进行排序

来自分类Dev

猫鼬在嵌套数组上聚合

来自分类Dev

猫鼬在多个数组中填充嵌套元素

来自分类Dev

猫鼬-如何仅填充每个对象嵌套数组中的第一个元素

来自分类Dev

用猫鼬填充模型对象数组

来自分类Dev

用猫鼬填充模型对象数组

来自分类Dev

猫鼬填充-数组

来自分类Dev

猫鼬通过ObjectID从嵌套数组中拉出一个元素

来自分类Dev

如何在猫鼬中查询嵌套数组

来自分类Dev

使用玉+猫鼬显示嵌套数组

来自分类Dev

猫鼬查询帮助:分页,排序,嵌套数组的限制

来自分类Dev

猫鼬按字段排序嵌套数组

来自分类Dev

猫鼬按ID递增嵌套数组

来自分类Dev

更新混合类型的猫鼬嵌套数组

来自分类Dev

猫鼬和NodeJS中的嵌套数组中的问题

来自分类Dev

使用玉+猫鼬显示嵌套数组

来自分类Dev

猫鼬如何使用$ elemMatch嵌套数组

来自分类Dev

猫鼬填充对象数组

来自分类Dev

用猫鼬填充子文档数组字段

来自分类Dev

猫鼬用$ in查找数组

来自分类Dev

如何在findOne中过滤猫鼬中的嵌套数组而无需嵌套对象

来自分类Dev

用猫鼬填充嵌套属性

来自分类Dev

猫鼬expressJS更新嵌套数组中的单个字段