MongoDB如何查询返回嵌套数组所有元素均匹配指定条件的文档
解法1:使用$not + 反向$elemMatch(兼容性最好,所有MongoDB版本都支持)
逻辑为反向排除:只要terapie数组中不存在任何一个不符合要求的元素,就代表所有元素都满足条件,查询语句如下:
db.pazienti.find({ terapie: { $not: { $elemMatch: { $or: [ { descrtratt: { $ne: "Chemioterapia" } }, { nomemed: { $ne: "null" } } ] } } } })
解法2:使用$expr + $allElementsTrue(MongoDB 3.6及以上版本支持,逻辑更直观)
直接遍历数组所有元素校验条件,只有所有元素都符合要求时才返回文档:
db.pazienti.find({ $expr: { $allElementsTrue: { $map: { input: "$terapie", in: { $and: [ { $eq: ["$$this.descrtratt", "Chemioterapia"] }, { $eq: ["$$this.nomemed", "null"] } ] } } } } })
上述两种查询都会仅返回你需求中的第2、4条测试文档。
内容的提问来源于stack exchange,提问作者Piero.Sgri
相关产品推荐
相关产品推荐

