sql >> Database >  >> NoSQL >> MongoDB

MongoDB geneste array zoeken met $map

U kunt onderstaande query gebruiken.

Ik heb een paar dingen veranderd.

1.Geen $elemMatch is vereist voor enkele criteria. Gebruik in plaats daarvan puntnotatie.

2.Verplaats de $map van de subgroep binnen de $map van de groep telefoniste.

[
  {"$match":{
    "empId":"19107",
    "address.country":"AUS",
    "group.primaryGroup.primary":"Y",
    "group.subGroup.primarySubGroup.primary":"Y"
  }},
  {"$project":{
    "empId":1,
    "mobile":1,
    "address":{"$filter":{"input":"$address","as":"d","cond":{"$eq":["$$d.country","AUS"]}}},
    "group":{
      "$map":{
        "input":"$group",
        "as":"v",
        "in":{
          "groupId":"$$v.groupId",
          "primaryGroup":{"$filter":{"input":"$$v.primaryGroup","as":"vp","cond":{"$eq":["$$vp.primary","Y"]}}},
          "subGroup":{
            "$map":{
              "input":"$$v.subGroup",
              "as":"n",
              "in":{
                "subGroupId":"$$n.subGroupId",
                "primarySubGroup":{"$filter":{"input":"$$n.primarySubGroup","as":"mp","cond":{"$eq":["$$mp.primary","Y"]}}}
              }
            }
          }
        }
      }
    }
  }}
]



  1. Sharden met lente-mongo

  2. MongoDB-gegevensbron toevoegen in Orbeon

  3. MongoDB krijgt alle velden + sorteer op waarde berekend uit meerdere velden

  4. meerdere documenten invoegen met behulp van mongoengine in mongodb