2017-04-04 1 views
0
db.school.find({ "merchant" : "cc8c0421-e7fc-464d-9e1d-37e168b216c3" }) 

にアレイ部について重複する値を見つける:カントは、これは、そのクエリの学校のコレクションから例の文書であるMongoDBの

{ 
     "_id" : ObjectId("57fafasf2323232323232f57682cd42"), 
     "status" : "wait", 
"merchant" : "cc8c0421-e7fc-464d-9e1d-37e168b216c3", 
     "isValid" : false, 
    "fields" : { "schoolid" : { 
      "value" : "2323232", 
      "detail" : { 
       "revisedBy" : "teacher", 
       "revisionDate" : ISODate("2015-06-24T09:22:44.288+0000") 
      }, 
      "history" : [ 

      ] 
     }} 
    } 

私はduplcate schoolidを持っているかを確認します。だから私はこれを行う:

db.school.aggregate([ 
{$match:{ "merchant" : "cc8c0421-e7fc-464d-9e1d-37e168b216c3" 
    { $group: { 
    _id: { fields.schoolid.value: "$fields.schoolid.value" }, 
    count: { $sum: 1 } 
    } }, 
    { $match: { 
    count: { $gte: 2 } 
    } }, 
    { $sort : { count : -1} }, 
    { $limit : 10 } 
]); 

しかし、それはエラーをもたらします。

私はこの

_id: { "fields.schoolid.value": "$fields.schoolid.value" }, 

または _idのように実行しようとしましたライン

のロットのエラーがたくさん:{ 'fields.schoolid.value':「$ 'fields.schoolid。値 ''}、

が機能しませんでした。私はそれを使うことができますか?

答えて

1

ご提供いただいた資料によると、fieldsフィールドは存在しないため、グループステージは機能しません。あなたのクエリは次のようになります。

db.school.aggregate([ 
    { $match: { "merchant" : "cc8c0421-e7fc-464d-9e1d-37e168b216c3"}}, 
    { $group: { 
    _id: { value: "$fields.schoolid.value" }, 
    count: { $sum: 1 } 
    } }, 
    { $match: { 
    count: { $gte: 2 } 
    } }, 
    { $sort : { count : -1} }, 
    { $limit : 10 } 
]); 

はまたfields.schoolid.valueは、あなたが「それをenclodeする」または削除する「を必要とし、有効なフィールド名ではないことに注意してください」。

+0

フィールドを追加しました。ごめんなさい。私はそれを ""で囲ったが、それでも同じである – mark

関連する問題