1

文書を数えるには、次のようになります。のMongoDBの集計と「myCollection」と呼ばれるコレクションで

{ 
    _id : 57b4b4e028108d801738a472, 
    updatedAt : 2016-08-17T19:03:01.831+0000, 
    createdAt : 2016-08-17T19:02:56.887+0000, 
    from : 57b1c2fc4bf55ba009b36c84, 
    to : 57b1c75e4bf55ba009b36c85, 
} 

は私が「と」「から」との発生をカウントし、このような文書のコレクションで終わる必要があります。

{ 
    "_id" : 7b1c2fc4bf55ba009b36c84, 
    "occurredInFrom" : 12, 
    "occurredInTo" : 16 
} 

ここで、_idは '$ from'または '$ to'のいずれかに由来します。

私が書いた間違った集計クエリはこれです:私は間違いなくその_idを見ることができます

{ 
    $group: { 
    _id: "$from", 
     occurredInFrom: { $sum: 1 }, 
     occurredInTo: { $sum: 1} 
    } 
} 

:十分ではありません「$から」。私に正しい方法を教えてもらえますか?

注: 'myCollection'の構造は最終的なものではありません。より良い構造があると思われる場合は、提案してください。

+2

に関連する[MongoDBの集計クエリ、または複雑すぎる?](https://stackoverflow.com/questions/35161734/mongodb-aggregate-query-or-too-complex)と[Mongo Groupと2つのフィールドの合計](https://stackoverflow.com/questions/35549200/mongo-group-and-sum-with-two-fields/35550524#35550524) – styvane

答えて

1

試してみてください。この

db.myCollection.aggregate([ 
    { $project: 
    { _id: 0, 
     dir: [ 
     {id:"$from", from:{"$sum":1}, to:{"$sum":0}}, 
     {id:"$to", from:{"$sum":0}, to:{"$sum":1}} 
     ] 
    } 
    }, 
    { $unwind : "$dir" }, 
    { $group: 
    { 
     _id: "$dir.id", 
     occurredInFrom: { $sum: "$dir.from" }, 
     occurredInTo: { $sum: "$dir.to" } 
    } 
    } 
]) 
+0

例外:許可されていないフィールド型オブジェクト式の配列( 'dir')、 コード:15992 – Granga

+0

ええ、私は修正して、それは私のdbのために働いています –

+0

私のDBバージョン3.0のmongolabサンドボックスかもしれません。私はこの古いバージョンで動作させる方法を見つけようとします。ありがとうございました。 – Granga