2017-12-22 1 views
1

Ich arbeite in Mongodb. Ich habe eine Sammlung, in der Sammlung gibt es ein EmailAddress Feld. In EmailAddress gibt es zahlreiche ungültige & gültige EmailAddress Daten.Regex in Mongo Sammlung Aggregat Abfrage

Ich habe eine Abfrage geschrieben, um den doppelten Datensatz zu finden. Ich bin auch in der Lage, gültige EmailAddress zu finden, aber nicht in der Lage, beide Abfragen zusammenzuführen.

db.EZShredCustomerData.aggregate(
    {"$match": {"AccountObjectId" : "597ee5ed1f2632885bb650"} }, 
    {"$group" : 
     { 
      "_id": "$EmailAddress", 
      "AccountObjectID" : { $first: '$AccountObjectId' }, 
      "EmailAddress" : { $first: '$EmailAddress' }, 
      "count": { "$sum": 1 } 

    } }, 
{"$match": {"count" : { $gte: 1 }} }) 

Durch diese Abfrage, erhalte ich doppelte Datensätze wie

[email protected] 2 
n/a    24 
[email protected] 12 
none    16 
;     8 
        460 

Ich schreibe auch die E-Mail-Validierung gültig ist oder nicht

db.EZShredCustomerData.find({ 
    "AccountObjectId": "597ee5ed1f2632885bb650", 
    EmailAddress: { $regex: /^[a-zA-Z0-9._-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/} 
    }) 

Problem ist, dass aufgrund mangelnder Erfahrung in mongo nicht in der Lage, beide Abfragen zusammenzuführen und erwartete Daten zu erhalten

AccountObjectID   EmailAddress 
597ee5ed1f2632885bb650 [email protected] 
597ee5ed1f2632885bb650 [email protected] 

Antwort

0

Ich habe selbst getan, das folgende Code ist.

db.EZShredCustomerData.aggregate(
    {"$match": {"AccountObjectId" : "597ee5ed1f2632885bb650"} }, 
    {"$group" : 
     { 
      "_id": "$EmailAddress", 
      "AccountObjectID" : { $first: '$AccountObjectId' }, 
      "EmailAddress" : { $first: '$EmailAddress' }, 
      "count": { "$sum": 1 } 

    } }, 
{"$match": {"count" : { $eq: 1 }} }, 
{"$match": {"EmailAddress" : { $regex: /^[a-zA-Z0-9._-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/ }} }) 
Verwandte Themen