MongoDB在子数组上进行填充和匹配

时间:2019-07-06 15:24:11

标签: mongodb

假设我在mongodb中有一个这样的模式

#!

治疗地点

lens: Schema = 
    name: { type: String },
    treatments: [
         type: { type: ObjectId, ref: 'treatment', required: true },
         colors: [{ type: ObjectId, ref: 'color' }]
    ]

颜色是

treatment: Schema = 
        name: { type: String },
        price: { type: Number }

当我查询镜头系列时,我在做:

color: Schema = 
        name: { type: String },
        price: { type: Number }

提取全部数据。

如果我需要滤除没有价格的镜片护理中的类型或颜色,我想像这样修改查询

db.lens.find({})
       .populate('treatments.type')
       .populate('treatments.colors')

问题是结果查询返回长度相同但类型和颜色为null的治疗数组:

db.lens.find({})
       .populate({ path: 'type', match: { price: {$ne: null }})
       .populate({ path: 'colors', match: { price: {$ne: null }})

_id由mongodb自动生成。

现在有两个问题:

  • 为什么mongodb为每个子文档生成一个_id?

  • 如何查询集合以完全删除所有具有'treatments.type'= null的子文档?

颜色并不重要,因为当我过滤掉整个子文档行时,颜色将被删除。

0 个答案:

没有答案