2017-12-22 25 views
1

私はmongodbで働いています。私はコレクションを持っています、コレクション内にEmailAddressフィールドがあります。 EmailAddressには、有効なEmailAddressデータが含まれている無効なタイプの無効なメールが数多くあります(&)。mongoコレクション集計クエリの正規表現

重複レコードも検索するためのクエリを作成しましたが、有効なEmailAddressも見つけられますが、両方のクエリをマージすることはできません。このクエリを通じて

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

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

、私はまた、電子メールを検証誰書き

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

と同様に重複したレコードを取得しています

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

有効かどうかの問題は経験が不足しているため、ということですmongoで両方のクエリをマージして、期待されるデータを得ることができない

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

答えて

0

私は自分で行っています 次はコードです。

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}$/ }} })