假设我在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的子文档?
颜色并不重要,因为当我过滤掉整个子文档行时,颜色将被删除。