1.需求

mongodb查询过滤出某个数组字段元素个数(即长度) >= N的所有文档,或者查询长度=N的所有文档
例如有如下格式的文档,collection:defect_product_data

   {"barcode" : "028201693002026300269101111000000000", 
    "status" : "judg_audited", 
    "judge_info" : [
        {
            "judge_result" : "concession", 
            "rework_process" : "清洗", 
            "judge_user" : "", 
            "judge_opinion" : "", 
            "judge_time" : ISODate("2020-09-23T15:59:11.660+0000"), 
            "judge_type" : "judge"
        }, 
        {
            "judge_result" : "concession", 
            "rework_process" : "清洗", 
            "judge_user" : "test", 
            "judge_opinion" : "重新判定", 
            "judge_time" : ISODate("2020-09-23T15:59:11.660+0000"), 
            "judge_type" : "audit", 
            "audit_result" : "reject"
        },
    ]}, 

2. 查询状态为judge_audited,且judge_info长度大于等于2的文档

ps.加上判断该字段必须存在的逻辑,避免报错

db.defect_product_data.find({'status':'judge_audited','judge_info': {'$exists':true}, '$where':'this.judge_info.length>=2'})

3. 查询状态为judged,且长度为1的文档

db.defect_product_data.find({'status':'judged','judge_info': {'$size':1}})
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐