タグ付けされた質問 「aggregation-framework」

MongoDB Aggregation Frameworkは、MongoDB 2.2以降でデータを再形成および集約する手段を提供します。

14
MongoDBコレクションのオブジェクト配列内の照会された要素のみを取得します
私のコレクションに次のドキュメントがあるとします。 { "_id":ObjectId("562e7c594c12942f08fe4192"), "shapes":[ { "shape":"square", "color":"blue" }, { "shape":"circle", "color":"red" } ] }, { "_id":ObjectId("562e7c594c12942f08fe4193"), "shapes":[ { "shape":"square", "color":"black" }, { "shape":"circle", "color":"green" } ] } クエリを実行します。 db.test.find({"shapes.color": "red"}, {"shapes.color": 1}) または db.test.find({shapes: {"$elemMatch": {color: "red"}}}, {"shapes.color": 1}) 一致したドキュメント(ドキュメント1)を返しますが、常にすべての配列項目が含まれshapesます。 { "shapes": [ {"shape": "square", "color": "blue"}, {"shape": "circle", "color": …




7
MongoDB SELECT COUNT GROUP BY
MongoDBで遊んで、簡単な方法を見つけようとしています SELECT province, COUNT(*) FROM contest GROUP BY province しかし、集約関数を使用してそれを理解することはできないようです。私はいくつかの本当に奇妙なグループ構文を使用してそれを行うことができます db.user.group({ "key": { "province": true }, "initial": { "count": 0 }, "reduce": function(obj, prev) { if (true != null) if (true instanceof Array) prev.count += true.length; else prev.count++; } }); しかし、集約関数を使用するより簡単/高速な方法はありますか?

6
すべての既存のフィールドを含め、新しいフィールドをドキュメントに追加します
$ project集計ステージを定義して、新しいフィールドを追加して既存のすべてのフィールドを含めるように指示できます。既存のフィールドをすべてリストする必要はありません。 私のドキュメントは次のようになり、多くのフィールドがあります: { obj: { obj_field1: "hi", obj_field2: "hi2" }, field1: "a", field2: "b", ... field26: "z" } 私はこのような集計操作を行いたいです: [ { $project: { custom_field: "$obj.obj_field1", //the next part is that I don't want to do field1: 1, field2: 1, ... field26: 1 } }, ... //group, match, and whatever... …

3
Mongodbは、集約フレームワークについて説明します
MongoDBに集約フレームワークの説明機能はありますか?ドキュメントに表示されません。 チェックする他の方法がない場合、クエリは集計フレームワーク内でどのように実行されますか? 私はあなたがただ見つけることを知っています db.collection.find().explain() しかし、集計フレームワークではエラーが発生します db.collection.aggregate( { $project : { "Tags._id" : 1 }}, { $unwind : "$Tags" }, { $match: {$or: [{"Tags._id":"tag1"},{"Tags._id":"tag2"}]}}, { $group: { _id : { id: "$_id"}, "count": { $sum:1 } } }, { $sort: {"count":-1}} ).explain()

4
MongoDBで重複レコードを見つける
mongoコレクションで重複フィールドをどのように見つけますか? 「名前」フィールドが重複していないか確認したいのですが。 { "name" : "ksqn291", "__v" : 0, "_id" : ObjectId("540f346c3e7fc1054ffa7086"), "channel" : "Sales" } どうもありがとう!

3
複数のフィールドによるmongodbグループ値
たとえば、次のドキュメントがあります。 { "addr": "address1", "book": "book1" }, { "addr": "address2", "book": "book1" }, { "addr": "address1", "book": "book5" }, { "addr": "address3", "book": "book9" }, { "addr": "address2", "book": "book5" }, { "addr": "address2", "book": "book1" }, { "addr": "address1", "book": "book1" }, { "addr": "address15", "book": "book1" }, { …

5
mongodbは、フィールド/キーごとに異なる値の数を数えます
DBでフィールドに含まれる個別の値の数を計算するクエリはありますか? fe国のフィールドがあり、国の値には8種類あります(スペイン、イギリス、フランスなど)。 誰かが新しい国のドキュメントをさらに追加した場合、クエリは9を返します。 グループ化してカウントするより簡単な方法はありますか?

6
MongoDBの$ unwindオペレーターとは何ですか?
今日はMongoDBでの初日なので、私と一緒に楽になってください:) $unwindオペレーターが理解できません。おそらく英語が母国語ではないためです。 db.article.aggregate( { $project : { author : 1 , title : 1 , tags : 1 }}, { $unwind : "$tags" } ); プロジェクトオペレーターは私が理解できるものだと思います(のようSELECTですね)。しかし、その後、$unwind(引用)すべてのソースドキュメント内の巻き戻された配列のすべてのメンバーに対して1つのドキュメントを返します。 これはJOIN?そうならば、どのように結果$project(と_id、author、titleおよびtagsフィールド)と比較することができるtags配列? 注:私はMongoDBのWebサイトから例を挙げましたが、tags配列の構造がわかりません。タグ名の単純な配列だと思います。

6
配列内のObjectIdの$ lookup
単一のObjectIdではなくObjectIdの配列であるフィールドで$ lookupを実行するための構文は何ですか? 注文ドキュメントの例: { _id: ObjectId("..."), products: [ ObjectId("..<Car ObjectId>.."), ObjectId("..<Bike ObjectId>..") ] } 機能しないクエリ: db.orders.aggregate([ { $lookup: { from: "products", localField: "products", foreignField: "_id", as: "productObjects" } } ]) 望ましい結果 { _id: ObjectId("..."), products: [ ObjectId("..<Car ObjectId>.."), ObjectId("..<Bike ObjectId>..") ], productObjects: [ {<Car Object>}, {<Bike Object>} ], }


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.