sql >> データベース >  >> NoSQL >> MongoDB

配列内部要素によるMongoDBグループ

    どのフレームワークを使用していますか?これはMongoDBシェルではなく、MapReduceの奇妙なラッパーのように見えます。その場合、$ unwindは使用できず、集約フレームワークのユーザーに必要です。モンゴシェルに必要なものは次のとおりです:

    db.articles.aggregate([
      {$match: { class_date: { $gte: date } } },
      {$project: { _id: 0, class_artist: 1 } },
      {$unwind: "$class_artist" },
      {$group: { _id: "$class_artist", tags: { $sum: 1 } }},
      {$project: { _id: 0,class_artist: "$_id", tags: 1 } },
      {$sort: { tags: -1 } }
    ])
    

    とても効率的に:

    1. 過去7日間の変数をすでに設定しているため、日付でフィルタリングします
    2. 必要なフィールドのみを投影します{必要なのは1つだけです! }
    3. 配列を巻き戻して、すべてのドキュメントのすべての配列要素のレコードを作成します
    4. 展開されたドキュメントからアーティストをグループ化する
    5. _idをいじりまわしたグループとして使用できるドキュメント形式に投影します
    6. 結果を逆の順序で並べ替えて、最初にタグ付けされたトップを表示します

    また、集約の優れている点は、これらのステージを徐々に構築して、何が起こっているかを確認できることです。

    必要に応じて、独自のドライバー実装またはODMフレームワークにシェイクしてベイクします。




    1. サーバーがクラッシュした後、MongoDBが起動しない

    2. Python辞書:u'文字を削除する

    3. マングースで生のmongodb操作を行う方法は?

    4. 2つの異なるソート済みセットに従ってRedisをソートするにはどうすればよいですか?